GoLang
未读
Go 1.18 泛型全面讲解
Go 1.18正式引入争议已久的泛型特性,通过类型形参(Type Parameter)和类型实参(Type Argument)实现代码复用。其核心机制包括:
1. **泛型类型**:如 `type Slice[T int|float32] []T`,通过类型约束(Type Constraint)限定可接受的类型,实例化后(如 `Slice[int]`)才能使用。
2. **泛型方法**:泛型类型可定义方法(如 `(s MySlice[T]) Sum() T`),实现通用数据结构(如队列、栈)。
3. **泛型函数**:如 `func Add[T int|float64](a, b T) T`,支持自动推导类型实参。
接口被重新定义为“类型集”(Type Set),支持通过 `|` 组合类型或接口,并引入 `~` 指定底层类型、`any` 替代 `interface{}`、`comparable` 约束可比较类型等新特性。泛型适用于为不同类型编写相同逻辑的场景,可避免反射带来的性能损失和类型安全问题,但需注意其语法限制(如匿名结构体/函数不支持泛型)。

