在go语言中泛型的学习使用及示例代码
下面以比较int类型 x,y大小的方法作为go泛型学习测试demo
先看一下旧版非泛型代码示例
func Min( x , y int ) int {
if x < y {
return x
}
return y
}
上面这方式是非常严谨及完美的比较int方法,
但是如果有一天,需求增加了,
我们需要比较不是两个int类型的变量而是要比较两个float64类型变量的方法呢?
在go没有引入泛型时,该如何去完成这个需求呢?
旧版非泛型只能重新在定义一遍新增类型函数方法,
比如:定义float64类型函数
func MinFloat64(x , y float64) float64 {
if x < y {
return x
}
return y
}
这样的缺点非常明显了,如果出现新需求,就要新增定义函数方法
新版泛型就能完美解决该问题
用go的新特性泛型简单解决
泛型示例代码
func MinF[F int64 | float64 | float32](x , y F) F {
if x < y {
return x
}
return y
}
ps:
F就是我们定义的一个类型形参,
他允许 int64 | float64 | float32 这个三个类型,这个F不是固定参数,随便定义
泛型调用:
func main() {
var a , b int64
var x , y float32
a = 1
b = 2
MinF(1 , 2)
x = 2.3
y = 2.4
MinF(x , y)
}
如果后面有新增类型只需要在F后面加 | 类型 就可ok了
相关文章