Sobes.tech
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 una map nil è 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