3 回答

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

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
正確指出的那樣,Golang 中沒(méi)有內(nèi)置的 min 或 max 函數(shù)。
但是,我會(huì)建議一個(gè)稍微不同的解決方案:
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
}
這樣就解決了空切片的問(wèn)題:出現(xiàn)運(yùn)行時(shí)錯(cuò)誤 ( index out of range) 并且最大值是免費(fèi)的。:-)

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
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 關(guān)注
- 186 瀏覽
添加回答
舉報(bào)