Будут ли map упорядоченными?

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

Нет. В Go map не гарантирует порядок итерации. Более того, Go специально рандомизирует порядок при range, чтобы разработчики не полагались на него.

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

Если нужен порядок — сортируй ключи отдельно:

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

Это by design: хеш-таблица не имеет естественного порядка.

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

Что такое sync.Map и когда её использовать?