类型参数
基本概念
定义
- generic: 声明时保留类型占位符, 使用时再指定具体类型;
- type parameter: 类型参数, 写在方括号中;
- type argument: 调用或实例化时提供的具体类型;
- constraint: 类型参数必须满足的约束;
泛型函数
语法格式
func First[T any](items []T) T { // T 为类型参数; any 为约束
return items[0] // 返回值类型为 T
}
调用泛型函数
概念
- 类型推导: 编译器可根据普通参数推导类型参数;
- 推导失败: 需要显式写出类型实参;
语法格式
func main() {
a := First[int]([]int{1, 2, 3}) // 显式提供类型实参 int
b := First([]string{"go", "lang"}) // 编译器根据参数推导 T 为 string
println(a, b)
}