Sobes.tech
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 map deklariert, aber nicht initialisiert wurde, kann sie direkt vor dem Einfügen initialisiert werden.
  • Manchmal wird die map in 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.