[Golang] Check If Item in Slice or Array
Question
How to check if an item is in a slice or array in Go?
Solution
There are many methods to do this [1]. My approach is to create a map [2] type and save the items of slice/array in the map, and then check if the item is in the map or not.
The following is an example of above approach.
package main
import (
"fmt"
)
func main() {
// initialize a slice of int
slice := []int{2, 3, 5, 7, 11, 13}
// save the items of slice in map
m := make(map[int]bool)
for i := 0; i < len(slice); i++ {
m[slice[i]] = true
}
// check if 5 is in slice by checking map
if _, ok := m[5]; ok {
fmt.Println("5 is in slice")
} else {
fmt.Println("5 is not in slice")
}
// check if 6 is in slice by checking map
if _, ok := m[6]; ok {
fmt.Println("6 is in slice")
} else {
fmt.Println("6 is not in slice")
}
}
To see real-world application, see reference [3]. The prime numbers are returned in a slice. Then the prime numbers are saved in the map, and we can check if a number is prime or not by checking if the number is in the map.
Tested on: Go Playground
References:
[1] |
[2] | Go maps in action - The Go Blog |
[3] | [Golang] Goldbach's conjecture |