Sobes.tech
Senior

Ar žemėlapis garantuoja duomenų skaitymo tvarką?

sobes.tech AI

Atsakymas iš AI

Go kalboje, įmontuotas map tipas ne garantuoja elementų perėjimo tvarką skaitant. Perėjimas per mapą vyksta pseudoatsitiktine tvarka, kuri gali keistis kiekvieno programos paleidimo metu. Jei reikalingas tvarkingas perėjimas, būtina papildomai saugoti raktus masyve ir juos rūšiuoti prieš perėjimą.

Pavyzdys, kaip peržiūrėti map su rūšiavimu raktų:

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

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

// Rūšiavimas
sort.Strings(keys)

// Perėjimas per rūšiuotus raktus
for _, k := range keys {
    fmt.Println(k, m[k])
}