Sobes.tech
Senior

Waarborgt de map de leesvolgorde van gegevens?

sobes.tech AI

Antwoord van AI

In Go garandeert het ingebouwde map-type niet de volgorde van doorlopen van de elementen bij het lezen. Iteratie over een map gebeurt in een pseudo-willekeurige volgorde, die bij elke uitvoering van het programma kan veranderen. Als een gesorteerde doorloop nodig is, moeten de sleutels aanvullend in een slice worden opgeslagen en vóór de iteratie worden gesorteerd.

Voorbeeld van het doorlopen van een map met sortering van de sleutels:

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

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

// Sleutels sorteren
sort.Strings(keys)

// Doorlopen van de gesorteerde sleutels
for _, k := range keys {
    fmt.Println(k, m[k])
}