Sobes.tech
Senior

Дали картата гарантира реда на четене на данните?

sobes.tech AI

Отговор от AI

В Go вграденият тип map не гарантира реда на обхождане на елементите при четене. Итерацията върху map се извършва в псевдослучаен ред, който може да се променя при всяко стартиране на програмата. Ако е необходима подредена обиколка, е необходимо допълнително да се съхраняват ключовете в срез и да се сортират преди итерацията.

Пример за обхождане на map с сортиране на ключовете:

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

// Получаване на ключовете
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])
}