遍历地图的所有键

有没有办法获得一个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语言规范for语句指定第一个值是键,第二个variables是值,但不一定要存在。

这里有一些简单的方法来获得地图键的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] } 

有没有办法获得一个Go语言地图中所有键的列表?

 ks := reflect.ValueOf(m).MapKeys() 

我如何遍历所有的密钥?

使用接受的答案:

 for k, _ := range m { ... }