• arch
    2025-06-08 来自陕西
    func Unique[T comparable](input []T) []T { seen := make(map[T]struct{}) result := make([]T, 0, len(input)) for _, item := range input { if _, exists := seen[item]; !exists { seen[item] = struct{}{} result = append(result, item) } } return result } 约束的局限性​​ ​​不可比较类型​​:如 []int(切片)或 chan string(通道)无法使用该函数,调用时会触发编译错误,符合预期。 ​​自定义类型​​:若自定义类型包含不可比较字段(如切片字段),则无法满足 comparable 约束,需调整设计

    作者回复: 这份思考题的解答非常棒,无论是代码实现还是对约束局限性的思考,都相当到位!👍 既然你提到了“需调整设计”,那不妨再往前想一步。如果 T 不是 comparable,我们确实不能用 map[T]struct{} 了。那么,判断两个元素是否“重复”的责任就不能完全依赖语言内置的比较操作了。这时如果让你设计一个通用的解决方案?你会如何设计呢?

    
    