首页 文章

迭代 Map 的所有键

提问于
浏览
233

有没有办法获取Go语言 Map 中所有键的列表?元素的数量由 len() 给出,但是如果我有一个像这样的 Map :

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

如何迭代所有键?

3 回答

  • 4

    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指定第一个值是键,第二个变量是值,但不必存在 .

  • 9

    这里有一些简单的方法来获取 Map 键的 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]
    }
    
  • 391

    有没有办法获取Go语言 Map 中所有键的列表?

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

    如何迭代所有键?

    使用接受的答案:

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

相关问题