[Go語言] 檢查元素是否在切片或陣列裡
問題
在Go語言中,如何檢查某個元素是否在切片(slice)或陣列(array)裡?
解法
有許多方式可以檢查 [1] 。 我的方法是先建立一個 map [2] 類型, 並且把切片/陣列的所有元素存在 map 裡,然後再檢查某個元素是否在該 map 裡。
下面是上述方法的反例。
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")
}
}
參考 [3] 是真實世界的應用。質數被傳回在切片(slice)裡。接著這些質數被存在map裡, 我們藉由檢查一個數值是否在該map裡來確認該數值是否為質數。
Tested on: Go Playground
參考:
[1] |
[2] | Go maps in action - The Go Blog |
[3] | [Golang] Goldbach's conjecture |