Sobes.tech
Junior — Middle

Ce acțiuni sunt permise cu o variabilă de tip Map care nu a fost încă inițializată?

sobes.tech AI

Răspuns de la AI

În Go, o variabilă de tip map are implicit valoarea nil dacă nu a fost inițializată.

Cu o map nil, sunt permise următoarele acțiuni:

  • Citirea valorii după cheie — va returna valoarea zero a tipului și un indicator de absență a cheii.
  • Verificarea existenței unei chei folosind value, ok := map[key].

Operațiile nepermise sunt:

  • Scrierea (atribuierea unei valori unei chei) va provoca un panic.
  • Apelarea funcțiilor care modifică harta (de exemplu, delete) pe o map nil este sigură și nu provoacă panic.

Exemplu:

var m map[string]int // m == nil

v, ok := m["key"] // ok == false, v == 0

// m["key"] = 10 // panic: atribuire într-o mapă nil

delete(m, "key") // sigur, nu face nimic

Pentru a folosi o mapă pentru scriere, trebuie să fie inițializată, de exemplu, cu make:

m = make(map[string]int)
m["key"] = 10 // acum funcționează