Sobes.tech
Middle

Co zobrazí program při iteraci přes mapu?

sobes.tech AI

Odpověď od AI

V Go není pořadí iterace přes mapu definováno a může se při každém spuštění programu měnit. To je způsobeno tím, že mapy v Go jsou implementovány pomocí hash tabulek a pro bezpečnost a nepředvídatelnost je pořadí průchodu záměrně náhodně rozvrženo.

Příklad:

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)
    }
}

Při každém spuštění může být výstup odlišný, například:

b 2
a 1
c 3

nebo

c 3
b 2
a 1

Pokud je potřeba seřazený výstup, je třeba klíče shromáždit do pole, seřadit je a iterovat přes seřazené klíče.