ExpertiDict

Go · Intermediário · Português · Técnico

ordem de iteração do map

/ˈoʁ.dẽj ʤi i.te.ɾa.ˈsɐ̃w̃ du mɛp/substantivo

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

Veja também

Todos os termos de Go