Sobes.tech
Junior — Middle

È possibile estrarre un valore da una mappa che non è ancora stata inizializzata?

sobes.tech AI

Risposta dell'AI

In Go, se una mappa (map) non è stata inizializzata (cioè, è uguale a nil), tentare di estrarre un valore tramite una chiave non causerà un panic, ma restituirà semplicemente il valore zero per il tipo di valore e un flag booleano false, che indica che la chiave non esiste.

Esempio:

var m map[string]int // m == nil

value, ok := m["key"]
fmt.Println(value, ok) // Mostrerà: 0 false

Tuttavia, se si tenta di assegnare un valore a una mappa non inizializzata, si verificherà un panic:

m["key"] = 10 // panic: assegnamento a entry in nil map

Perciò, per usare in modo sicuro una mappa, bisogna inizializzarla, ad esempio, usando make:

m = make(map[string]int)
m["key"] = 10 // ora funziona correttamente