Junior — Middle
Czy można zagwarantować kolejność przeglądania elementów w strukturze danych Map?
sobes.tech AI
Odpowiedź od AI
W języku Go kolejność iteracji elementów w strukturze danych map nie jest gwarantowana i jest losowa. Zostało to celowo zrobione, aby zapobiec zależności kodu od kolejności iteracji i zwiększyć bezpieczeństwo.
Jeśli potrzebny jest gwarantowany porządek, zazwyczaj:
- Wyodrębnia się klucze do tablicy (slice)
- Sortuje się tablicę
- Iteruje się po mapie według posortowanych kluczy
Przykład:
keys := make([]string, 0, len(myMap))
for k := range myMap {
keys = append(keys, k)
}
sort.Strings(keys)
for _, k := range keys {
fmt.Println(k, myMap[k])
}
W ten sposób nie można polegać na kolejności iteracji map w Go.