Go中文网导读:你在使用过程中是否有过这样的困惑,或者你可能使用的方式就是错误的!
现象
我们知道Go语言math包里面定义了min/max函数,但是是float64类型的,而并没有整数类型的min/max。
Go语言的math包里面定义的min/max函数签名如下:
math.Min(float64, float64) float64math.Max(float64, float64) float64
事实上我们更经常要比较的是两个整数的场景:
math.Min/Max(int, int), ormath.Min/Max(int64, int64)
解释
那么,为什么Go语言不提供整数类型的min/max这两个函数呢? 下面的这篇文章给了一个解释:
「不要乱用 math 包的 Max/Min」,链接:https://mrekucci.blogspot.jp/2015/07/dont-abuse-mathmax-mathmin.html
总结起来,主要理由是说,
- 由于float64类型要处理infinity和not-a-number这种值,而它们的处理非常复杂,一般用户处理不好,所有