Sobes.tech
Junior — Middle

Kaip vykdoma elementų sekos apėjimo tvarka Map duomenų struktūroje?

sobes.tech AI

Atsakymas iš AI

Go kalboje map duomenų struktūra negarantuoja tam tikros elementų perėjimo tvarkos. Per for range ciklą iteruojant, tvarka bus atsitiktinė ir gali keistis kiekvieno programos paleidimo metu.

Pavyzdys, kaip pereiti per map elementus:

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

Jei reikalinga tvarkinga perėjimo tvarka, dažniausiai išskiriami raktai į sąrašą, jį surūšiuoja ir tada peržvelgia pagal surūšiuotą sąrašą:

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

Taip, map perėjimo tvarka pagal numatytuosius nustatymus nėra apibrėžta ir yra atsitiktinė.