体验golang1.18泛型

595 次浏览次阅读
没有评论

因为本机跑的是 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})
}
正文完
 0
评论(没有评论)