Junior — Middle
Qual è la differenza tra una mappa con valore nullo e una slice che contiene un valore nullo?
sobes.tech AI
Risposta dell'AI
In Go, una mappa (map) con valore zero è una mappa non inizializzata e uguale a nil. Tentare di scrivere in una tale mappa provocherà un panic.
Un slice con valore zero è uno slice nil, che non punta a un array e ha lunghezza e capacità 0. Può essere usato in modo sicuro, ad esempio, per leggere o passare a funzioni.
Differenze chiave:
- map == nil significa che la mappa non è inizializzata e non può accettare elementi.
- slice == nil significa che il slice è vuoto e non punta a un array, ma può essere usato per leggere (sarà vuoto) e passare.
Esempio:
var m map[string]int // m == nil
// m["key"] = 1 // panic: assegnamento a entry in mappa nil
var s []int // s == nil
fmt.Println(len(s)) // 0
s = append(s, 1) // ora il slice è inizializzato
Pertanto, una mappa nil non è adatta per la scrittura, e un slice nil è sicuro per la lettura e l'espansione.