Jaki jest najlepszy sposób sprawdzenia, czy pewna wartość znajduje się w wycinku łańcucha? Używałbym zestawu w innych językach, ale Go go nie ma.Sprawdź, czy plaster łańcuchowy zawiera określoną wartość w Go
Moja najlepsza próba jest to tak daleko:
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
Rozwiązanie to powinno być ok dla małych plasterki, ale co zrobić na plasterki z wielu elementów?
Dla idiomatycznej Go użyjesz 'map [keyType] struct {}' (pusta struktura o wartości zero) lub 'map [keyType] bool' dla tego i ** nie ** uint8, jak pokazano. W pierwszym przypadku użyjesz pokazanego '_, ok: = zestawu [item]'. Jeśli używasz bool, możesz po prostu zrobić 'if set [item]' jako nieistniejące wpisy zwracają ["zero value"] (https://golang.org/ref/spec#The_zero_value), która dla bool jest fałszywa. –