有没有办法获取Go语言地图中所有键的列表?元素的数量由len()
给出,但是如果我有一个类似的地图:
m := map[string]string{ "key1":"val1", "key2":"val2" };
如何迭代所有键?
答案 0 :(得分:445)
https://play.golang.org/p/JGZ7mN0-U-
for k, v := range m {
fmt.Printf("key[%s] value[%s]\n", k, v)
}
或
for k := range m {
fmt.Printf("key[%s] value[%s]\n", k, m[k])
}
Go language specs for for
statements指定第一个值是键,第二个变量是值,但不必存在。
答案 1 :(得分:10)
这是获取地图密钥slice
的简单方法。
// 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]
}
答案 2 :(得分:7)
有没有办法获取Go语言地图中所有键的列表?
ks := reflect.ValueOf(m).MapKeys()
如何迭代所有键?
使用接受的答案:
for k, _ := range m { ... }
答案 3 :(得分:3)
A 类型不可知解决方案:
for _, key := range reflect.ValueOf(yourMap).MapKeys() {
value := s.MapIndex(key).Interface()
fmt.Println("Key:", key, "Value:", value)
}
答案 4 :(得分:0)
这也是一个选择
for key, element := range myMap{
fmt.Println("Key:", key, "Element:", element)
}