Est-il possible d'obtenir une liste de toutes les clés d'une carte de langue Go? Le nombre d'éléments est donné par len()
, mais si j'ai une carte comme celle-ci:
m := map[string]string{ "key1":"val1", "key2":"val2" };
Comment puis-je parcourir toutes les clés?
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])
}
Aller aux spécifications de langue pour les instructions for
spécifie que la première valeur est la clé, la deuxième variable est la valeur, mais ne doit pas nécessairement être présente.
Voici un moyen facile d’obtenir slice
des touches de la carte.
// 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]
}
Est-il possible d'obtenir une liste de toutes les clés d'une carte de langue Go?
ks := reflect.ValueOf(m).MapKeys()
comment puis-je parcourir toutes les clés?
Utilisez la réponse acceptée:
for k, _ := range m { ... }