Junior — Middle
In welke gevallen is het toegestaan om een insert-operatie uit te voeren op een Map die nog niet is geïnitialiseerd?
sobes.tech AI
Antwoord van AI
In Go is het niet mogelijk om een insert-operatie uit te voeren op een map als deze niet geïnitialiseerd is (d.w.z. nil), omdat dit tijdens runtime een panic zal veroorzaken.
De initialisatie van een map gebeurt met de functie make:
m := make(map[string]int)
ms["key"] = 42 // correct
Als de map nil is, zal een poging tot schrijven een panic veroorzaken:
var m map[string]int
m["key"] = 42 // panic: toewijzing aan entry in nil map
Uitzondering:
- Als de
mapgedeclareerd maar niet geïnitialiseerd is, kan deze direct vóór het invoegen geïnitialiseerd worden. - Soms wordt de
mapgeïnitialiseerd in een constructor of functie en vervolgens doorgegeven.
Dus, invoegen in een niet-geïnitialiseerde map is alleen toegestaan na expliciete initialisatie via make of toewijzing van een reeds bestaande en geïnitialiseerde map. Zonder dit zal de operatie een runtime-fout veroorzaken.