Find the Min or Max Value in a Slice (New to Go 1.21)
The latest Go release, 1.21, has introduced two new built-in functions: min() and max(). These functions have long been used in many other languages, such as Python and JavaScript, and are now welcome additions to Go.
The min() and max() functions have been introduced to simplify the process of finding the smallest and largest numbers in a set, respectively. There was plenty of talk as to whether these should be included as “built-ins” or introduced into the cmp package.
How to use min() and max()
Note: This will only work on fixed data sets (not slices)
This method uses built-ins, see below if you’re working with slices.
packagemainimport"fmt"funcmain(){// Max
num:=max(1,2,3)fmt.Println("Max =",num)// Min
minNum:=min(1,2,3)fmt.Println("Min =",minNum)// Won't run:
// invalid argument: myList (variable of type []int) cannot be ordered
// myList := []int{1, 2, 3}
// fmt.Println("Max in Slice =", max(myList))
}
Working with Slices?
The slices [docs] package also contains a way of finding the min and max values within our data set, as seen below. We have a simple slice with the numbers 1 to 3 and then finding both the min and max on that.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
packagemainimport("fmt""slices")funcmain(){myList:=[]int{1,2,3}// Max in Slice
max:=slices.Max(myList)fmt.Println("Max in Slice =",max)// Min in Slice
min:=slices.Min(myList)fmt.Println("Min in Slice =",min)}
Edd is a PHP and Go developer who enjoys blogging about his experiences, mostly about creating and coding new things he's working on and is a big beliver in open-source and Linux.