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 关注
- 149 浏览
添加回答
举报