Heim >Backend-Entwicklung >Golang >Wie vermeide ich Laufzeitprobleme bei der Verwendung verschachtelter Karten in Go?
In Go sind Karten eine leistungsstarke Datenstruktur, mit der Sie Schlüssel-Wert-Paare speichern können. Verschachtelte Karten, bei denen die Werte selbst Karten sind, können eine nützliche Möglichkeit sein, komplexe Daten zu organisieren.
Einige Entwickler sind jedoch auf Probleme bei der Arbeit mit verschachtelten Karten gestoßen. Beispielsweise wird das folgende Code-Snippet erfolgreich ausgeführt:
func main() { var data = map[string]string{} data["a"] = "x" data["b"] = "x" data["c"] = "x" fmt.Println(data) }
Und das Folgende auch:
func main() { var data = map[string][]string{} data["a"] = append(data["a"], "x") data["b"] = append(data["b"], "x") data["c"] = append(data["c"], "x") fmt.Println(data) }
Aber der folgende Code gerät zur Laufzeit in Panik:
func main() { var data = map[string]map[string]string{} data["a"]["w"] = "x" data["b"]["w"] = "x" data["c"]["w"] = "x" fmt.Println(data) }
Das Problem entsteht, weil der Nullwert für Kartentypen in Go Null ist, was darauf hinweist, dass die Karte vorhanden ist nicht initialisiert. Der Versuch, auf Werte in einer Null-Map zuzugreifen oder diese zu speichern, führt zu einer Laufzeitpanik.
Im letzten Beispiel wird die (äußere) Daten-Map initialisiert, hat aber keine Einträge. Wenn Sie es wie data["a"] indizieren, gibt die Indizierung den Nullwert des Werttyps zurück, da es noch keinen Eintrag mit dem Schlüssel "a" gibt, was bei Karten Null ist. Das Zuweisen zu Daten „a“ wird dann zu einem Versuch, einer Null-Karte zuzuweisen, was zu einer Panik führt.
Um dieses Problem zu vermeiden, müssen Sie eine Karte initialisieren, bevor Sie Elemente darin speichern . Dies kann auf verschiedene Arten erfolgen:
var data = map[string]map[string]string{ "a": {}, "b": {}, "c": {}, }
var data = make(map[string]map[string]string)
var data = map[string]map[string]string{} data["a"] = map[string]string{} data["b"] = make(map[string]string) data["c"] = make(map[string]string)
Nach der Initialisierung können Sie sicher Werte in den verschachtelten Karten speichern.
Das obige ist der detaillierte Inhalt vonWie vermeide ich Laufzeitprobleme bei der Verwendung verschachtelter Karten in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!