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
mapon deklareeritud, kuid mitte initsialiseeritud, saab seda otse enne sisestamist initsialiseerida. - Mõnikord initsialiseeritakse
mapkonstruktoris 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.