Sobes.tech
Junior — Middle

Millistel juhtudel on lubatud teha sisestusoperatsioon Map-i, mis pole veel initsialiseeritud?

sobes.tech AI

Vastus AI-lt

Go keeles ei saa teha sisestusoperatsiooni map-i, kui see pole initsialiseeritud (st. nil), kuna see põhjustab käivitamise ajal paanikaga.

map-i initsialiseerimine toimub make funktsiooni abil:

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

Kui map on nil, siis kirjutamiskatse põhjustab paanikaga:

var m map[string]int
m["key"] = 42 // paanik: määramine `nil`-i `map`-ile

Erand:

  • Kui map on deklareeritud, kuid mitte initsialiseeritud, saab seda otse enne sisestamist initsialiseerida.
  • Mõnikord initsialiseeritakse map konstruktoris või funktsioonis ning edastatakse edasi.

Seega on sisestamine initsialiseerimata map-i lubatud ainult pärast selle selget initsialiseerimist make-i või juba olemasoleva ja initsialiseeritud map-i määramisega. Ilma selleta põhjustab operatsioon käivitamise ajal vea.