Golang语言社区Go语言用例Go知识库

go语言为什么没有min/max(int, int)函数

2017-10-31  本文已影响329人  CodingCode

golang为什么没有min/max(int, int)函数

我们知道go语言math包里面定义了min/max函数,但是是float64类型的,而并没有整数类型的min/max。

go语言的math包里面定义的min/max函数如下:

math.Min(float64, float64) float64
math.Max(float64, float64) float64

事实上我们更经常要比较的是两个整数的场景:

math.Min/Max(int, int), or
math.Min/Max(int64, int64)

那么,为什么go语言不提供整数类型的min/max这两个函数呢? 下面的这篇文章给了一个解释:

https://mrekucci.blogspot.jp/2015/07/dont-abuse-mathmax-mathmin.html

总结起来,主要理由是说,

  1. 由于float64类型要处理infinity和not-a-number这种值,而他们的处理非常复杂,一般用户没有能力,所有go需要为用户提供系统级别的解决办法。
  2. 对于int/int64类型的数据,min/max的实现非常简单直接,用户完全可以自己实现,例如:
func Min(x, y int64) int64 {
    if x < y {
        return x
    }
    return y
}

结论就是说go希望用户自己来实现如此简单的函数。

那么我的问题是:
因为min/max(int, int)的使用也如此的常见,难道需要用户在每一个自己的项目里面都实现一份min/max的代码吗,为什么不放在系统库例如math里面,方便所有人使用呢?

上一篇下一篇

猜你喜欢

热点阅读