Junior — Middle
Quali azioni sono consentite con una variabile di tipo Map che non è ancora stata inizializzata?
sobes.tech AI
Risposta dell'AI
In Go, una variabile di tipo map ha di default il valore nil se non è stata inizializzata.
Con una map nil, sono consentite le seguenti azioni:
- Lettura del valore tramite chiave — restituirà il valore zero del tipo e un flag di assenza della chiave.
- Verifica della presenza di una chiave usando
value, ok := map[key].
Operazioni non consentite:
- La scrittura (assegnare un valore a una chiave) causerà un panic.
- Chiamare funzioni che modificano la mappa (ad esempio,
delete) su unamapnilè sicuro e non provoca panic.
Esempio:
var m map[string]int // m == nil
v, ok := m["key"] // ok == false, v == 0
// m["key"] = 10 // panic: assegnamento a entry in nil map
delete(m, "key") // sicuro, non fa nulla
Per usare una mappa per la scrittura, deve essere inizializzata, ad esempio con make:
m = make(map[string]int)
m["key"] = 10 // ora funziona