Junior — Middle
Kann man einen Wert aus einer Karte extrahieren, die noch nicht initialisiert wurde?
sobes.tech KI
Antwort von AI
In Go, wenn eine Karte (map) nicht initialisiert wurde (d.h. gleich nil ist), führt der Versuch, einen Wert anhand eines Schlüssels abzurufen, nicht zu einem Panic, sondern gibt einfach den Nullwert für den Wertetyp und eine boolesche Flagge false zurück, die angibt, dass der Schlüssel fehlt.
Beispiel:
var m map[string]int // m == nil
value, ok := m["key"]
fmt.Println(value, ok) // Gibt aus: 0 false
Wenn man jedoch versucht, einen Wert in eine nicht initialisierte Karte zu schreiben, tritt ein Panic auf:
m["key"] = 10 // Panic: Zuweisung an Eintrag in nil-Map
Daher muss man eine Karte, um sie sicher zu verwenden, initialisieren, z.B. mit make:
m = make(map[string]int)
m["key"] = 10 // funktioniert jetzt korrekt