Sobes.tech
Senior

Zaručuje mapa pořadí čtení dat?

sobes.tech AI

Odpověď od AI

V jazyce Go typ map, který je vestavěný, nezaručuje pořadí průchodu prvky při čtení. Iterace přes mapu probíhá v pseudo-náhodném pořadí, které se může při každém spuštění programu měnit. Pokud je potřeba seřazený průchod, je nutné klíče dodatečně uložit do pole a před iterací je seřadit.

Příklad průchodu mapou se seřazením klíčů:

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

// Získání klíčů
keys := make([]string, 0, len(m))
for k := range m {
    keys = append(keys, k)
}

// Seřazení klíčů
sort.Strings(keys)

// Iterace přes seřazené klíče
for _, k := range keys {
    fmt.Println(k, m[k])
}