Sobes.tech
Junior — Middle

Kokiais atvejais leidžiama atlikti įterpimo operaciją į Map, kuri dar nebuvo inicializuota?

sobes.tech AI

Atsakymas iš AI

Go kalboje nėra galima atlikti įterpimo operacijos į map, jei jis nebuvo inicializuotas (t.y., jei jis yra nil), nes tai sukels klaidą vykdymo metu.

map inicializacija atliekama naudojant funkciją make:

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

Jei map yra nil, bandymas įrašyti sukels klaidą:

var m map[string]int
m["key"] = 42 // klaida: priskyrimas `nil` mapui

Išimtis:

  • Jei map yra deklaruotas, bet neįvestas, jis gali būti tiesiogiai inicializuotas prieš įterpiant.
  • Kartais map yra inicializuojamas konstruktoriuje arba funkcijoje ir perduodamas toliau.

Todėl įterpimas į neįvestą map yra leidžiamas tik po jo aiškios inicializacijos naudojant make arba priskiriant jau esamą ir inicializuotą map. Be to, ši operacija sukels klaidą vykdymo metu.