Sobes.tech
Junior — Middle

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

sobes.tech AI

Отговор от 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 по подразбиране не е определена и е случайна.