Sobes.tech
Junior — Middle

Ако преминете няколко пъти през Map, ще запази ли последователността на ключовете?

sobes.tech AI

Отговор от AI

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

Ако трябва да запазите реда, например реда на вмъкване, трябва да използвате допълнителна структура от данни, например срез от ключове, и да итерарате по него.

Пример:

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

for _, k := range keys {
    fmt.Println(k, m[k])
}

По този начин, последователността на обход ще бъде стабилна и предсказуема.