[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 |