Sobes.tech
Junior — Middle

In quali casi è consentito eseguire un'operazione di inserimento in una Map che non è ancora stata inizializzata?

sobes.tech AI

Risposta dell'AI

In Go, non è possibile eseguire un'operazione di inserimento in una map se questa non è stata inizializzata (cioè, se è nil), poiché ciò provocherebbe un panic in fase di esecuzione.

L'inizializzazione di una map avviene tramite la funzione make:

m := make(map[string]int)
ms["key"] = 42 // corretto

Se la map è nil, un tentativo di scrittura provocherà un panic:

var m map[string]int
m["key"] = 42 // panic: assegnamento a una entry in una map nil

Eccezione:

  • Se la map è dichiarata ma non inizializzata, può essere inizializzata immediatamente prima dell'inserimento.
  • A volte, la map può essere inizializzata in un costruttore o funzione e passata avanti.

Pertanto, l'inserimento in una map non inizializzata è consentito solo dopo la sua iniziale esplicita tramite make o assegnazione di una map già esistente e inizializzata. Senza ciò, l'operazione causerà un errore in fase di esecuzione.