dpf56454 2017-07-06 05:56

# 在golang中找到最小值？

In the language there is a minimum function https://golang.org/pkg/math/#Min But what if I have more than 2 numbers? I must to write a manual comparison in a for loop, or is there another way? The numbers are in the slice.

• 写回答

#### 2条回答默认 最新

• duanmaifu3428 2017-07-06 06:07
关注

No, there isn't any better way than looping. Not only is it cleaner than any other approach, it's also the fastest.

``````values := []int{4, 20, 0, -11, -10}

min := values[0]
for _, v := range values {
if (v < min) {
min = v
}
}

fmt.Println(min)
``````

EDIT

Since there has been some discussion in the comments about error handling and how to handle empty slices, here is a basic function that determines the minimum value. Remember to import `errors`.

``````func Min(values []int) (min int, e error) {
if len(values) == 0 {
return 0, errors.New("Cannot detect a minimum value in an empty slice")
}

min = values[0]
for _, v := range values {
if (v < min) {
min = v
}
}

return min, nil
}
``````
本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论

#### 悬赏问题

• ¥30 Unity接入微信SDK 无法开启摄像头
• ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写