gpt4 book ai didi

go - golang 中是否有用于 int 参数 slice 或可变数量的 int 参数的内置 min 函数?

转载 作者:IT老高 更新时间:2023-10-28 13:04:14 26 4
gpt4 key购买 nike

Precursor:我刚开始接触 golang。

这可能被证明是一个愚蠢的问题,因为执行这些计算很容易,但无论如何我都会问它,因为我在谷歌搜索时没有找到答案。

是否有一个内置函数返回 int 参数 slice 的最小值:

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)。

关于如何改进代码的一些建议:

  1. MinIntSlice 将为空 slice 返回 0。然而 0 也是一个有效的最小元素。我认为在空 slice 上调用 panic 是一个更好的选择。

  2. 使用范围循环:

    for i, e := range v {
    if i==0 || e < m {
    m = e
    }
    }

如果不给出值的索引,它会给你最小值 0,它可能不存在于给定的值中,所以你还必须对索引应用条件。

关于go - golang 中是否有用于 int 参数 slice 或可变数量的 int 参数的内置 min 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34259800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com