Sobes.tech
Назад к вопросам
Junior — Middle
79

Как осуществляется последовательность обхода элементов в структуре данных Map?

Ответ от нейросети

sobes.tech AI

В Go структура данных map не гарантирует определённый порядок обхода элементов. При итерации с помощью цикла for range порядок будет случайным и может меняться при каждом запуске программы.

Пример обхода элементов map:

m := map[string]int{"a": 1, "b": 2, "c": 3}
for key, value := range m {
    fmt.Println(key, value)
}

Если нужен упорядоченный обход, обычно извлекают ключи в срез, сортируют их, а затем обходят по отсортированному срезу:

keys := make([]string, 0, len(m))
for k := range m {
    keys = append(keys, k)
}
sort.Strings(keys)
for _, k := range keys {
    fmt.Println(k, m[k])
}

Таким образом, последовательность обхода в map по умолчанию не определена и случайна.