Sobes.tech
Senior

O map garante a ordem de leitura dos dados?

sobes.tech IA

Resposta da IA

Em Go, o tipo incorporado map não garante a ordem de iteração dos elementos ao ler. A iteração sobre um map ocorre numa ordem pseudoaleatória, que pode mudar a cada execução do programa. Se for necessária uma iteração ordenada, é preciso armazenar as chaves adicionalmente num slice e ordená-las antes da iteração.

Exemplo de iteração de um map com ordenação das chaves:

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

// Obter as chaves
keys := make([]string, 0, len(m))
for k := range m {
    keys = append(keys, k)
}

// Ordenar as chaves
sort.Strings(keys)

// Iterar sobre as chaves ordenadas
for _, k := range keys {
    fmt.Println(k, m[k])
}