檢查特定值是否在字符串切片中的最佳方法是什麼?我會用其他語言的Set,但Go沒有。檢查字符串切片是否包含特定值Go
我最好的嘗試是這個至今:
package main
import "fmt"
func main() {
list := []string{"a", "b", "x"}
fmt.Println(isValueInList("b", list))
fmt.Println(isValueInList("z", list))
}
func isValueInList(value string, list []string) bool {
for _, v := range list {
if v == value {
return true
}
}
return false
}
http://play.golang.org/p/gkwMz5j09n
這個解決方案應該是確定的小片,但如何處理許多元素片嗎?
對於慣用的Go,您可以使用'map [keyType] struct {}'(一個空的零大小的結構體作爲值)或'map [keyType] bool'來實現此功能,而** not ** uint8如圖所示。對於前者,您可以使用顯示的'_,ok:= set [item]'構造。如果使用bool,只要設置[item]'作爲不存在的條目返回[「零值」](https://golang.org/ref/spec#The_zero_value),這對於bool而言是假的。 –