Sobes.tech
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 map gedeclareerd maar niet geïnitialiseerd is, kan deze direct vóór het invoegen geïnitialiseerd worden.
  • Soms wordt de map geï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.