Sobes.tech
Middle

Cosa mostrerà il programma con un'iterazione su una mappa?

sobes.tech AI

Risposta dell'AI

In Go, l'ordine di iterazione su una mappa non è definito e può cambiare ad ogni esecuzione del programma. Ciò è dovuto al fatto che le mappe in Go sono implementate utilizzando tabelle hash, e per motivi di sicurezza e imprevedibilità, l'ordine di attraversamento viene casualizzato intenzionalmente.

Esempio:

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

Ad ogni esecuzione, l'output può essere diverso, ad esempio:

b 2
a 1
c 3

oppure

c 3
b 2
a 1

Se si desidera un output ordinato, bisogna raccogliere le chiavi in un slice, ordinarle e iterare sulle chiavi ordinate.