Sobes.tech
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.