Sobes.tech
Senior

Czy mapa gwarantuje kolejność odczytu danych?

sobes.tech AI

Odpowiedź od AI

W Go wbudowany typ map nie gwarantuje kolejności iteracji elementów podczas odczytu. Iteracja po mapie odbywa się w pseudo-losowej kolejności, która może się zmieniać przy każdym uruchomieniu programu. Jeśli potrzebne jest uporządkowane przejście, należy dodatkowo przechowywać klucze w tablicy i sortować je przed iteracją.

Przykład iteracji po mapie z sortowaniem kluczy:

m := map[string]int{"b": 2, "a": 1, "c": 3}

// Pobierz klucze
keys := make([]string, 0, len(m))
for k := range m {
    keys = append(keys, k)
}

// Posortuj klucze
sort.Strings(keys)

// Iteruj po posortowanych kluczach
for _, k := range keys {
    fmt.Println(k, m[k])
}