体验golang1.18泛型

作者: 太阳上的雨天 分类: Go 发布时间: 2022-08-03 14:46

因为本机跑的是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})
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注