前驱:我刚开始用golang弄湿脚.
这可能被证明是一个愚蠢的问题,因为它很容易执行这些计算,但我还是会问它,因为我在谷歌搜索时没有找到答案.
是否有内置函数返回一小部分int参数的最小值:
func MinIntSlice(v []int) (m int) { if len(v) > 0 { m = v[0] } for i := 1; i < len(v); i++ { if v[i] < m { m = v[i] } } return }
或者可变数量的int参数的最小值:
func MinIntVarible(v1 int, vn ...int) (m int) { m = v1 for i := 0; i < len(vn); i++ { if vn[i] < m { m = vn[i] } } return }
如果没有,最简单的"约定"是创建一个包含这样的帮助器的包吗?
这里没有内置功能.
如果仅在一个包中需要此功能,则可以编写未导出的功能(例如minIntSlice
).
如果您需要在多个包中使用此功能,则可以创建包并在其中放置类似的功能.您应该考虑将此包内部(https://golang.org/s/go14internal).
一些如何改进代码的建议:
MinIntSlice
将返回0表示空切片.但是0也是有效的min元素.我认为在空切片上调用恐慌是一个更好的选择.
使用范围循环:
for i, e := range v { if i==0 || e < m { m = e } }
不给的值的索引,它会给你的最小值为0,这可能不会出现在给定的值,所以你也必须在申请指标条件.