泛型切片
概念说明
泛型切片可以把“元素类型”抽象成类型参数。
这样同一份切片处理逻辑可以用于 []int、[]string 等不同元素类型。
语法/规则
- 可以定义
type List[T any] []T表示泛型切片。 - 方法接收者要写成
func (list List[T]) Method() ...。 - 返回零值时,可以使用
var zero T。 - 如果需要比较元素,类型参数要使用
comparable约束。 - 如果只读取和返回元素,
any通常就够用。
泛型切片示例
| |
输出结果:
| |
常见错误
- 空切片取第一个元素时没有判断长度,导致索引越界。
- 需要比较元素时仍使用
any,导致无法使用==。 - 忘记处理零值,导致空切片场景返回值不明确。