在go语言中泛型的学习使用及示例代码
Go  /  管理员 发布于 2年前   389
下面以比较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了
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号