Итерация по всем клавишам карты

Есть ли способ получить список всех ключей на карте языков Go? Число элементов задается len(), но если у меня есть карта типа:

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

Как перебрать все клавиши?

Ответ 2

Вот несколько простых способов получить 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]
}

Ответ 3

Есть ли способ получить список всех ключей на карте языков Go?

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

как мне перебирать все ключи?

Используйте принятый ответ:

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