Sobes.tech
Senior

Kas kaart tagab andmete lugemise järjekorra?

sobes.tech AI

Vastus AI-lt

Go keeles sisseehitatud map-tüüp ei taga elementide läbimise järjekorda lugemisel. Map-i läbimine toimub pseudosuvalises järjekorras, mis võib iga programmi käivitamisel muutuda. Kui vajalik on järjestatud läbimine, tuleb lisaks salvestada võtmed massiivina ja enne läbimist sorteerida.

Näide map-i läbimisest võtmete sorteerimisega:

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

// Võtmete saamine
keys := make([]string, 0, len(m))
for k := range m {
    keys = append(keys, k)
}

// Võtmete sorteerimine
sort.Strings(keys)

// Läbimine sorteeritud võtmetega
for _, k := range keys {
    fmt.Println(k, m[k])
}