Go · Intermediário · Português · Técnico
ordem de iteração do map
A ordem em que range percorre um map não é definida e varia entre execuções, de propósito, para que ninguém dependa dela.
Onde usar
Um teste que compara a saída de um range sobre map passa às vezes e falha em outras. A solução é ordenar as chaves antes de iterar.
Em código
m := map[string]int{"b": 2, "a": 1}
keys := slices.Sorted(maps.Keys(m))
for _, k := range keys {
fmt.Println(k, m[k])
}Exemplos
O teste é instável porque depende da ordem de iteração do map.
Ordena as chaves antes do range, a ordem do map muda a cada execução.
Cuidado
Não é só 'aleatória': não se pode contar com nenhuma ordem, nem a de inserção. O encoding/json, por exemplo, ordena as chaves de um map ao gerar o JSON.
Sinônimos
ordem aleatória do map