9.5 类型参数列表

Go允许使用类型参数创建泛型类型和泛型函数。泛型类型也可以用于方法声明的接收器规范。

在类型定义和函数定义中,泛型类型参数出现在声明名称后的方括号([])内,

  • 在类型定义的情况下,在目标类型之前,以及

  • 在函数定义的情况下,在函数的参数之前。

例子:

type List[T any] struct {       // 在新类型名称后引入类型参数T(在此示例中)
  Items []T                     // 类型参数可以像具体类型一样在struct定义中使用
}
func Cons[T any]                   // 在函数名称后引入类型参数T
  (head T, list List[T])           // 类型参数可以在函数参数列表中使用
  List[T] {                        // 它可以用于函数返回值类型
  return List[T] {                 // 它可以在函数体中使用。示例代码仅用于演示目的
    Items: append([head], list.Items...)
  }
}

语法上,泛型类型参数列表是一个或多个类型参数及其对应的类型约束,用方括号括起来。参数用逗号分隔。

类型参数名称(例如T或E)是占位符标识符,它们必须在列表中的所有参数中唯一。当泛型类型或函数或方法的接收器类型被实例化/使用时,泛型类型参数将被具体类型参数代替。

最后更新于