383

Go言語マップのすべてのキーのリストを取得する方法はありますか?要素の数はによって与えられますがlen()、次のようなマップがある場合:

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

すべてのキーを反復処理するにはどうすればよいですか?

4

4 に答える 4

654

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])
}

forステートメントのGo言語仕様では、最初の値がキー、2番目の変数が値であると指定されていますが、存在する必要はありません。

于 2009-12-03T17:46:20.163 に答える
19

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]
}
于 2014-12-10T09:59:55.067 に答える
15

Go言語マップのすべてのキーのリストを取得する方法はありますか?

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

すべてのキーを反復処理するにはどうすればよいですか?

受け入れられた答えを使用してください:

for k, _ := range m { ... }
于 2016-09-03T16:20:20.160 に答える
4

タイプにとらわれないソリューション:

for _, key := range reflect.ValueOf(yourMap).MapKeys() {
    value := s.MapIndex(key).Interface()
    fmt.Println("Key:", key, "Value:", value)
}  
于 2021-01-01T00:48:32.630 に答える