3 回答

TA貢獻1816條經驗 獲得超6個贊
沒有內置的。
如果您只在一個包中需要此功能,您可以編寫一個未導出的函數(例如minIntSlice
)。
如果您需要在多個包中使用此功能,您可以創建一個包并將類似的功能放在那里。您應該考慮將此包設為內部 ( https://golang.org/s/go14internal )。
關于如何改進代碼的一些建議:
MinIntSlice
將為空切片返回 0。然而 0 也是一個有效的 min 元素。我認為在空切片上調用 panic 是更好的選擇。使用范圍循環:
for i, e := range v {
if i==0 || e < m {
m = e
}
}
通過不給出值的索引,它會給你最小值 0,它可能不存在于給定的值中,所以你還必須在索引上應用條件。

TA貢獻1847條經驗 獲得超11個贊
正確指出的那樣,Golang 中沒有內置的 min 或 max 函數。
但是,我會建議一個稍微不同的解決方案:
func MinMax(array []int) (int, int) {
var max int = array[0]
var min int = array[0]
for _, value := range array {
if max < value {
max = value
}
if min > value {
min = value
}
}
return min, max
}
這樣就解決了空切片的問題:出現運行時錯誤 ( index out of range) 并且最大值是免費的。:-)

TA貢獻1812條經驗 獲得超5個贊
min := s[0]
for i :=1; i < len(s); i++ {
if min > s[i] {
min = s[i]
}
}
min > s[i]? min = s[i] : min
- 3 回答
- 0 關注
- 185 瀏覽
添加回答
舉報