有没有办法获得Go语言地图中所有键的列表?元素的数量由len()
给出,但如果我有一张地图,如:迭代地图的所有键
m := map[string]string{ "key1":"val1", "key2":"val2" };
如何遍历所有的钥匙?
有没有办法获得Go语言地图中所有键的列表?元素的数量由len()
给出,但如果我有一张地图,如:迭代地图的所有键
m := map[string]string{ "key1":"val1", "key2":"val2" };
如何遍历所有的钥匙?
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指定的第一个值是密钥,第二变量是值,但不必须存在。
这里有一些简单的方法来获得地图键的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]
}
有没有办法让一个围棋语言地图的所有键的列表?
ks := reflect.ValueOf(m).MapKeys()
我怎么遍历所有的钥匙?
使用公认的答案:
for k, _ := range m { ... }
作为一种可能的疑难杂症,注意迭代的顺序是不确定的。 https://groups.google.com/d/msg/golang-nuts/YfDxpkI34hY/4pktJI2ytusJ – mna
Sudhir:golang语言规范明确地将地图定义为具有未定义的键排序。此外,从Go 1开始,按键顺序在运行之间有意地随机化以防止依赖于任何感知的顺序。 –
请注意,这不是一个可变的迭代,也就是说删除一个键将需要您重新开始迭代。 –