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?

Foi útil?

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
scroll top