Iterando todas as chaves de um mapa
-
12-09-2019 - |
Pergunta
Existe uma maneira de obter uma lista de todas as teclas em um mapa de idiomas Go? O número de elementos é dado por len()
, mas se eu tiver um mapa como:
m := map[string]string{ "key1":"val1", "key2":"val2" };
Como eu itera todas as chaves?
Solução
https://play.golang.org/p/jgz7mn0-u-
for k, v := range m {
fmt.Printf("key[%s] value[%s]\n", k, v)
}
ou
for k := range m {
fmt.Printf("key[%s] value[%s]\n", k, m[k])
}
Ir especificações de idioma para for
declarações Especifica que o primeiro valor é a chave, a segunda variável é o valor, mas não precisa estar presente.
Outras dicas
Aqui está uma maneira fácil de conseguir slice
das teclas de mapa.
// 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]
}
Existe uma maneira de obter uma lista de todas as teclas em um mapa de idiomas Go?
ks := reflect.ValueOf(m).MapKeys()
Como eu itera todas as chaves?
Use a resposta aceita:
for k, _ := range m { ... }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow