Go中泛型的抽象数据类型
介绍
Go1.18 实现的泛型,引入如下概念
类型形参(Type parameter)
类型实参(Type argument)
类型形参列表(Type parameter list)
类型约束(Type constraint)
实例化(Instantiations)
泛型类型(Generic type)
泛型接收器(Generic receiver)
泛型函数(Generic function)
类型参数是泛型的抽象数据类型,使用方括号定义
func Print[T any](s []T) {
for _, v := range s {
fmt.Println(v)
}
}
go1.17 的版本,可以通过 -G
的开关打开泛型
go1.17 run -gcflags=-G=3 xxx
示例
示例一
package main
import "fmt"
type any = interface{}
func f(a any) {
switch a.(type) {
case int:
fmt.Println("int")
case float64:
fmt.Println("float64")
case string:
fmt.Println("string")
}
}
func main() {
f(666)
f(3.1415)
f("hello world!")
}
示例二
package main
import "fmt"
func Print[T any](s []T) {
for _, v := range s {
fmt.Print(v)
}
fmt.Println()
}
func main() {
Print([]string{"hello, ", "world!"})
Print([]int64{1, 2, 3})
}
其他