golang為什么沒有min/max(int, int)函數(shù)
我們知道go語言math包里面定義了min/max函數(shù)杭跪,但是是float64類型的搂赋,而并沒有整數(shù)類型的min/max蘸吓。
go語言的math包里面定義的min/max函數(shù)如下:
math.Min(float64, float64) float64
math.Max(float64, float64) float64
事實上我們更經(jīng)常要比較的是兩個整數(shù)的場景:
math.Min/Max(int, int), or
math.Min/Max(int64, int64)
那么代兵,為什么go語言不提供整數(shù)類型的min/max這兩個函數(shù)呢? 下面的這篇文章給了一個解釋:
https://mrekucci.blogspot.jp/2015/07/dont-abuse-mathmax-mathmin.html
總結(jié)起來着绷,主要理由是說,
- 由于float64類型要處理infinity和not-a-number這種值集乔,而他們的處理非常復雜,一般用戶沒有能力笨农,所有g(shù)o需要為用戶提供系統(tǒng)級別的解決辦法就缆。
- 對于int/int64類型的數(shù)據(jù),min/max的實現(xiàn)非常簡單直接谒亦,用戶完全可以自己實現(xiàn)竭宰,例如:
func Min(x, y int64) int64 {
if x < y {
return x
}
return y
}
結(jié)論就是說go希望用戶自己來實現(xiàn)如此簡單的函數(shù)。
那么我的問題是:
因為min/max(int, int)的使用也如此的常見份招,難道需要用戶在每一個自己的項目里面都實現(xiàn)一份min/max的代碼嗎切揭,為什么不放在系統(tǒng)庫例如math里面,方便所有人使用呢?