Map упорядочена?

Junior
590 просмотров
AFK Offer AI

Нет. Map в Go не сохраняет порядок вставки и не сортирует ключи. Порядок итерации специально рандомизирован runtime.

m := map[int]string{1: "a", 2: "b", 3: "c"}
for k := range m {
    fmt.Print(k, " ") // каждый запуск: разный порядок
}

Это design decision — чтобы разработчики не полагались на порядок (в ранних версиях Go порядок был стабилен и люди зависели от него).

Если нужен порядок:

keys := make([]int, 0, len(m))
for k := range m {
    keys = append(keys, k)
}
slices.Sort(keys)
for _, k := range keys {
    fmt.Println(k, m[k])
}

Следующий вопрос

Как читать unicode строки?