Sobes.tech
Junior — Middle

Welche Aktionen sind mit einer Map-Variablen erlaubt, die noch nicht initialisiert wurde?

sobes.tech KI

Antwort von AI

In Go hat eine Variable vom Typ map standardmäßig den Wert nil, wenn sie nicht initialisiert wurde.

Mit einer nil-Karte sind folgende Aktionen erlaubt:

  • Wert anhand eines Schlüssels lesen — gibt den Nullwert des Typs und einen Indikator für das Fehlen des Schlüssels zurück.
  • Überprüfung, ob ein Schlüssel existiert, mit value, ok := map[key].

Nicht erlaubte Operationen:

  • Schreiben (Zuweisung eines Werts an einen Schlüssel) löst einen Panic aus.
  • Das Aufrufen von Funktionen, die die Karte ändern (z.B. delete), ist bei einer nil-Karte sicher und verursacht keinen Panic.

Beispiel:

var m map[string]int // m == nil

v, ok := m["key"] // ok == false, v == 0

// m["key"] = 10 // panic: Zuweisung an Eintrag in nil-Map

delete(m, "key") // sicher, tut nichts

Um eine Map zum Schreiben zu verwenden, muss sie initialisiert werden, z.B. mit make:

m = make(map[string]int)
m["key"] = 10 // funktioniert jetzt