在go语言中泛型的学习使用及示例代码
Go  /  管理员 发布于 1个月前   60
下面以比较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了
博主 在
2023年国务院办公厅春节放假通知:1月21日起休7天中评论 @ xiaoB 你只管努力,剩下的叫给天意;天若有情天亦老,..xiaoB 在
2023年国务院办公厅春节放假通知:1月21日起休7天中评论 会不会春节放假后又阳一次?..BUG4 在
你翻墙过吗?国内使用vpn翻墙可能会被网警抓,你需了解的事中评论 不是吧?..博主 在
go语言+beego框架中获取get,post请求的所有参数中评论 @ t1 直接在router.go文件中配就ok..Jade 在
如何在MySQL查询中获得当月记录中评论 Dear zongscan.com team, We can skyroc..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号