go在1.18正式推出了泛型,你是否和博主一样好奇其语法呢?快啊来看看吧
1. 版本更新&插件更新
go如何更新到最新版本,可以查看https://www.hengyumo.cn/momoblog/detail/20220417102155
idea插件更新: setting >> plugin >> installed
全部更新之后
idea版本更新(可能要更新多次,直到更新到不能更新为止): help >> check update
在此处勾选上泛型支持
可以看到,现在使用泛型已经不会报语法错误了:
2. 基础语法
package test_genericity
import (
"fmt"
)
func MyPrintln[C any](a C) {
fmt.Println(a)
}
func Example_g1() {
MyPrintln(1)
MyPrintln("小王")
MyPrintln([]int{3, 2, 1})
}
any代表任意类型,等于interface{}
func min[T ~int | ~float64](x, y T) T {
if x > y {
return y
} else {
return x
}
}
func Example_g2() {
minInt := min[int]
a := minInt(2, 3)
fmt.Println(a)
b := min[float64](2.0, 3)
fmt.Println(b)
c := min(b, -1)
fmt.Println(c)
}
上例演示了使用~int | ~float64 作为泛型约束,实现了一个可以通用比较int或者float64的min函数。
|