Sobes.tech
Junior — Middle

Come viene eseguita la sequenza di attraversamento degli elementi nella struttura dati Map?

sobes.tech AI

Risposta dell'AI

In Go, la struttura dati map non garantisce un ordine specifico nell'iterazione degli elementi. Durante un ciclo for range, l'ordine sarà casuale e può cambiare ad ogni esecuzione del programma.

Esempio di iterazione su una mappa:

m := map[string]int{"a": 1, "b": 2, "c": 3}
for key, value := range m {
    fmt.Println(key, value)
}

Se si desidera un'iterazione ordinata, di solito si estraggono le chiavi in un slice, si ordinano e poi si itera in ordine:

keys := make([]string, 0, len(m))
for k := range m {
    keys = append(keys, k)
}
sort.Strings(keys)
for _, k := range keys {
    fmt.Println(k, m[k])
}

In questo modo, la sequenza di iterazione in un map non è definita di default ed è casuale.