Sobes.tech
Junior — Middle

Come si accede ai valori in un dizionario che non è stato ancora creato in anticipo?

sobes.tech AI

Risposta dell'AI

In Go, se una mappa (map) non è ancora stata creata (cioè è nil), tentare di accedere agli elementi tramite la chiave non causerà un panic, ma restituirà semplicemente il valore zero del tipo degli elementi.

Ad esempio:

var m map[string]int // m == nil
fmt.Println(m["key"]) // Mostrerà 0, non causerà errore

Tuttavia, tentare di assegnare un valore a una mappa nil provocherà un panic:

m["key"] = 10 // panic: assegnazione a una voce in una mappa nil

Perciò, prima di scrivere in una mappa, bisogna assicurarsi che sia inizializzata, ad esempio:

m = make(map[string]int)
m["key"] = 10

In questo modo, per la lettura si può accedere a una mappa nil senza errori, ma per la scrittura è necessario creare preventivamente la mappa.