C'è un modo per ottenere un elenco di tutte le chiavi in una mappa della lingua Go? Il numero di elementi è dato da len(), ma se ho una mappa come:
m := map[string]string{ "key1":"val1", "key2":"val2" };
Come posso scorrere tutte le chiavi?
C'è un modo per ottenere un elenco di tutte le chiavi in una mappa della lingua Go? Il numero di elementi è dato da len(), ma se ho una mappa come:
m := map[string]string{ "key1":"val1", "key2":"val2" };
Come posso scorrere tutte le chiavi?
Risposte:
https://play.golang.org/p/JGZ7mN0-U-
for k, v := range m {
fmt.Printf("key[%s] value[%s]\n", k, v)
}
o
for k := range m {
fmt.Printf("key[%s] value[%s]\n", k, m[k])
}
Vai specifiche della lingua per le foristruzioni specifica che il primo valore è la chiave, la seconda variabile è il valore, ma non deve essere presente.
Ecco un modo semplice per ottenere slicele chiavi della mappa.
// Return keys of the given map
func Keys(m map[string]interface{}) (keys []string) {
for k := range m {
keys = append(keys, k)
}
return keys
}
// use `Keys` func
func main() {
m := map[string]interface{}{
"foo": 1,
"bar": true,
"baz": "baz",
}
fmt.Println(Keys(m)) // [foo bar baz]
}
Keysfunzione prendere una mappa con tasti di qualsiasi tipo, non solo stringhe?
func Keys(m map[interface{}]interface{}) (keys []interface{}), @ RobertT.McGibbon devi cambiare la funzione "prototipo"
map[interface{}]interface{}. Go non supporta i generici. Non è possibile creare una funzione con un mapparametro che accetta mappe con tipi di chiave diversi.
C'è un modo per ottenere un elenco di tutte le chiavi in una mappa della lingua Go?
ks := reflect.ValueOf(m).MapKeys()
come posso scorrere tutte le chiavi?
Usa la risposta accettata:
for k, _ := range m { ... }
for _, k := range v.MapKeys(), dal momento che nel tuo esempio ksarebbe l'indice int della porzione di chiavi