Sobes.tech
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.