Sobes.tech
Middle

Šta će prikazati program sa iteracijom preko mape?

sobes.tech АИ

Одговор од АИ

U Go-u, redosled iteracije preko mape nije definisan i može se menjati pri svakom pokretanju programa. To je zbog toga što su mape u Go-u implementirane korišćenjem hash tabela, i iz bezbednosnih i nepredvidivih razloga, redosled prolaska je namerno randomizovan.

Primer:

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

Pri svakom pokretanju, izlaz može biti različit, na primer:

b 2
a 1
c 3

ili

c 3
b 2
a 1

Ako je potrebna sortirana izlaz, treba prikupiti ključeve u niz, sortirati ih i iterirati po sortiranim ključevima.