Golang爲什麼沒有整型的max/min方法

作爲有一些經驗的Golang開發者,你可能意識到了Golang並沒有max/min方法來返回給定的兩個或多個整型數值中的最大值或最小值。其他語言通常會在覈心庫中提供這類方法。 你有沒有想過爲什麼Golang沒有這麼做?
Golang確實在math包中提供了max/min方法,但是僅用於對比float64類型。方法的簽名如下:

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

Golang爲float64提供max/min方法是浮點類型的比較對於大部分開發者來說比較困難。由於涉及精度問題,浮點數的對比往往沒有那麼直接。所以Golang在math包中提供了用於浮點數對比的內建方法。
對於int/int64數據類型來說,max/min方法的實現就相當簡單了,任何有基礎編程經驗的開發者都可以輕鬆的實現這兩個方法:

func Min(x, y int64) int64 {
 if x < y {
   return x
 }
 return y
}

func Max(x, y int64) int64 {
 if x > y {
   return x
 }
 return y
}

另外,爲了儘可能保持Golang簡潔乾淨,Golang並不支持泛型。所以既然已經有了對比float64數據類型的max/min方法,在同一個math包中就無法支持同名的但是參數類型不同的方法。也就是說下面的方法無法存在同一個包中。

math.Max(float64, float64) float64
math.Max(int64, int64) int64

這也符合Golang的設計原則,儘可能保持簡潔乾淨。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章