Junior — Middle
In welchen Fällen ist es erlaubt, eine Einfügeoperation in eine Map durchzuführen, die noch nicht initialisiert wurde?
sobes.tech KI
Antwort von AI
In Go kann man keine Einfügeoperation in eine map durchführen, wenn sie nicht initialisiert wurde (d.h. nil ist), da dies während der Laufzeit zu einem Panic führt.
Die Initialisierung der map erfolgt mit der Funktion make:
m := make(map[string]int)
ms["key"] = 42 // korrekt
Wenn die map nil ist, führt ein Schreibversuch zu einem Panic:
var m map[string]int
m["key"] = 42 // Panic: Zuweisung an Eintrag in nil-Map
Ausnahme:
- Wenn die
mapdeklariert, aber nicht initialisiert wurde, kann sie direkt vor dem Einfügen initialisiert werden. - Manchmal wird die
mapin einem Konstruktor oder einer Funktion initialisiert und weitergegeben.
Daher ist das Einfügen in eine nicht initialisierte map nur nach ihrer expliziten Initialisierung durch make oder Zuweisung einer bereits existierenden und initialisierten map erlaubt. Ohne dies führt die Operation zu einem Laufzeitfehler.