Ключи карты через итератор в Go
Ключи карты можно перебрать отдельно, без
значений, и порядок по-прежнему случайный.
Цикл перебора по карте по-прежнему дает пару
ключ и значение, а когда нужны только имена
полей, удобнее взять готовый шаг из пакета
maps.
Из пакета maps команда Keys
отдает итератор по типу ключа. Его подставляют
в range
так же, как срез или карту. Порядок обхода
не совпадает с порядком вставки и меняется
от запуска к запуску, как при обычном
переборе карты.
На экране две строки с именами ключей, но
их порядок заранее не угадаешь. Значения
1 и 2 в этом цикле не
используются: переменная цикла получает
только ключ.
Выведем ключи небольшой карты:
package main
import (
"fmt"
"maps"
)
func main() {
m := map[string]int{
"east": 1,
"west": 2,
}
for k := range maps.Keys(m) {
fmt.Println(k)
}
}
Дана следующая карта:
scores := map[string]int{
"ann": 10,
"bob": 12,
}
Выведите каждый ключ карты scores
отдельной строкой через итератор из пакета
maps.
Дана следующая карта:
flags := map[int]string{
1: "on",
2: "off",
}
Посчитайте, сколько ключей у flags,
перебирая только ключи без значений.
Дан следующий код:
m := map[string]int{"a": 1, "b": 2}
for k := range m {
fmt.Println(k)
}
Скажите, попадут ли значения карты в
переменную цикла при переборе только
ключей через итератор из maps.