跳到主要内容

类型参数

基本概念

定义

  • 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)
}