Sobes.tech
Junior — Middle

Jak przebiega kolejność odwiedzania elementów w strukturze danych Map?

sobes.tech AI

Odpowiedź od AI

W Go struktura danych map nie gwarantuje określonego porządku iteracji elementów. Podczas iteracji za pomocą pętli for range kolejność będzie losowa i może się zmieniać przy każdym uruchomieniu programu.

Przykład iteracji po mapie:

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

Jeśli potrzebne jest uporządkowane przejście, zwykle wyodrębnia się klucze do tablicy, sortuje je i iteruje po posortowanej tablicy:

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

W ten sposób, kolejność iteracji w map domyślnie nie jest określona i jest losowa.