Sobes.tech
Middle

Co wyświetli program podczas iteracji po mapie?

sobes.tech AI

Odpowiedź od AI

W Go kolejność iteracji po mapie nie jest zdefiniowana i może się zmieniać przy każdym uruchomieniu programu. Wynika to z faktu, że mapy w Go są implementowane przy użyciu tablic haszujących, a dla bezpieczeństwa i nieprzewidywalności celowo losowo się kolejność iteracji.

Przykład:

package main

import "fmt"

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

Przy każdym uruchomieniu wyjście może być różne, na przykład:

b 2
a 1
c 3

lub

c 3
b 2
a 1

Jeśli potrzebne jest uporządkowane wyjście, należy zebrać klucze do slice'a, posortować je i iterować po posortowanych kluczach.