因为本机跑的是 go1.17,想体验一下 go1.18 泛型。随决定采用 docker 方式
docker pull golang
docker run -itd -p 8001:8001 -v /Users/cc/docker/golang1.18:/go --name golang-1.18 golang
docker exec -it golang-1.18 /bin/sh
go env -w GO111MODULE=on
go env -w GOPROXY="https://goproxy.cn"
go env -w GOPATH="/go"
初体验
语法:
MyType[T1 constraint1 | constraint2, T2 constraint3...] ...
- MyType 可以是函数名, 结构体名, 类型名等
- T1, T2…是泛型名, 可以随便取
- constraint 的意思是约束
- 用 | 可以分隔多个 constraint, T 满足其中之一即可
Constraint(约束)
- any(interface{}, 任何类型都能接收 )
- Interger(所有 int, int64 int32…)
- 等等
案例:
package main
import "fmt"
func Print[T any](s []T) {
for _, v := range s {fmt.Println(v)
}
}
func main() {Print[int]([]int{1, 21, 90})
Print[float64]([]float64{1.1, 2.2})
}
正文完