Heim >Backend-Entwicklung >Golang >Wie behebe ich den Golang-Fehler „Laufzeitfehler: Zuordnung zum Eintrag in Null-Map'?

Wie behebe ich den Golang-Fehler „Laufzeitfehler: Zuordnung zum Eintrag in Null-Map'?

Susan Sarandon
Susan SarandonOriginal
2024-12-13 20:10:15516Durchsuche

How to Resolve the Golang

Behebung von „Laufzeitfehler: Zuweisung zu Eintrag in Null-Karte“ mit Golang Maps

Bei der Arbeit mit Karten in Go ist es wichtig, dies sicherzustellen dass die Karten ordnungsgemäß initialisiert werden, bevor auf sie zugegriffen oder ihnen Werte zugewiesen werden. Die Fehlermeldung „Laufzeitfehler: Zuordnung zum Eintrag in Null-Map“ weist darauf hin, dass Sie versuchen, ein Schlüssel-Wert-Paar in einer Map zu ändern, die nicht initialisiert wurde.

Lassen Sie uns das in erwähnte Code-Snippet analysieren die Frage:

import (
    "fmt"
    "gopkg.in/yaml.v2"
)

type T struct {
    cn     string
    street string
}

func main() {
    names := []string{"kasi", "remya", "nandan"}

    m := make(map[string]map[string]T, len(names))
    for _, name := range names {
        m["uid"][name] = T{cn: "Chaithra", street: "fkmp"}
    }
    fmt.Println(m)

    y, _ := yaml.Marshal(&m)

    fmt.Println(string(y))
}

Das Problem mit dem Code liegt in der folgenden Zeile:

m["uid"][name] = T{cn: "Chaithra", street: "fkmp"}

Hier, Sie versuchen, auf den Wert der angegebenen Schlüssel „uid“ und „name“ in der Zuordnung „m“ zuzugreifen und ihn zu ändern. Sie haben jedoch die innere Karte für den Schlüssel „uid“ nicht initialisiert. Daher verfügt die Karte „m“ nur über einen Schlüssel, nämlich eine leere Karte. Wenn Sie versuchen, auf die innere Karte unter „m“uid“ zuzugreifen und diese zu ändern, tritt in der Laufzeit ein Nullzeigerfehler auf, da der Schlüssel „uid“ nicht initialisiert wurde.

Um dieses Problem zu beheben, müssen Sie Folgendes tun Initialisieren Sie die innere Map für den Schlüssel „uid“, bevor Sie versuchen, darauf zuzugreifen und ihn zu ändern. Sie können dies tun, indem Sie vor der Schleife die folgende Zeile hinzufügen:

m["uid"] = make(map[string]T)

Diese Zeile initialisiert eine innere Map für den Schlüssel „uid“ ohne Werte und stellt so sicher, dass Sie während der Schleife darauf zugreifen und sie ändern können.

Mit dieser Änderung wird Ihr Code erfolgreich ausgeführt und generiert die erwartete Ausgabe. Denken Sie daran, dass es wichtig ist, Karten vor der Verwendung zu initialisieren, um Laufzeitfehler zu vermeiden.

Das obige ist der detaillierte Inhalt vonWie behebe ich den Golang-Fehler „Laufzeitfehler: Zuordnung zum Eintrag in Null-Map'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn