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