Iterating over all the keys of a map

Is there a way to get a list of all the keys in a Go language map? The number of elements is given by len() , but if I have a map like:

m := map[string]string{ "key1":"val1", "key2":"val2" };

How do I iterate over all the keys?


https://play.golang.org/p/JGZ7mN0-U-

for k, v := range m { 
    fmt.Printf("key[%s] value[%s]n", k, v)
}

or

for k := range m {
    fmt.Printf("key[%s] value[%s]n", k, m[k])
}

Go language specs for for statements specifies that the first value is the key, the second variable is the value, but doesn't have to be present.


下面是一些简单的方法来获得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]
}

Is there a way to get a list of all the keys in a Go language map?

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

how do I iterate over all the keys?

Use the accepted answer:

for k, _ := range m { ... }
链接地址: http://www.djcxy.com/p/4096.html

上一篇: Python 2.X中的range和xrange函数有什么区别?

下一篇: 遍历地图的所有键