Qual è il modo migliore per verificare se un certo valore si trova in una sezione di stringa? Vorrei usare un Set in altre lingue, ma Go non ne ha uno.Verificare se una sezione di stringa contiene un determinato valore in Go
Il mio miglior prova è questo finora:
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
Questa soluzione dovrebbe essere ok per piccole fette, ma cosa fare per le fette con molti elementi?
Per Go idiomatico si dovrebbe usare 'map [keyType] struct {}' (una struttura vuota zero dimension come valore) o 'map [keyType] bool' per questo e ** not ** uint8 come mostrato. Per il primo si usa il costrutto '_, ok: = set [item]' mostrato. Se si usa bool si può semplicemente fare "if set [item]" come voci inesistenti restituire il ["valore zero"] (https://golang.org/ref/spec#The_zero_value), che per bool è falso. –