Heim >Backend-Entwicklung >Golang >Wie gehe ich mit Fehlern wie „Ungültige Speicheradresse oder Null-Zeiger-Dereferenzierung' beim Zugriff auf Kartenelemente in Go um?

Wie gehe ich mit Fehlern wie „Ungültige Speicheradresse oder Null-Zeiger-Dereferenzierung' beim Zugriff auf Kartenelemente in Go um?

Susan Sarandon
Susan SarandonOriginal
2024-12-05 21:11:121107Durchsuche

How to Handle

"Map[string]*Type "Invalid Memory Address or Nil Pointer Deference"

Beim Zugriff auf die Felder einer Struktur kann es vorkommen, dass Fehler „Ungültige Speicheradresse oder Null-Zeiger-Dereferenzierung“. Dies weist normalerweise darauf hin, dass der Zeiger auf die Struktur entweder nicht initialisiert ist oder auf einen ungültigen Speicher zeigt Adresse.

In Ihrem Fall versuchen Sie, ein Feld in einer Bedingungszuordnung festzulegen. Da es sich bei der Bedingungszuordnung jedoch um eine leere Zuordnung von Zeigern handelt, rufen Sie einen Nullwert für *guardduty.Condition ab Bedingung.

Laut „Maps in Action“ für Go kann man das Vorhandensein eines Schlüssels anhand eines Zweiwerts testen Zuweisung:

i, ok := m["route"]

In dieser Zuweisung wird i der unter dem Schlüssel „route“ gespeicherte Wert zugewiesen. Wenn der Schlüssel nicht vorhanden ist, wird i der Werttyp Null (0) zugewiesen , ok, ist ein boolescher Wert, der angibt, ob der Schlüssel in der Karte vorhanden ist.

Um das Problem zu beheben, ändern Sie Ihren Code wie folgt:

if cond, ok := condition["id"]; !ok { // <nil> false
    log.Println("Pointer is null")
} else {
    // Initialize a new guardduty.Condition
    // and assign it to the required key
    nc := &guardduty.Condition{Equals: strPtr}
    condition["id"] = nc
}

Das obige ist der detaillierte Inhalt vonWie gehe ich mit Fehlern wie „Ungültige Speicheradresse oder Null-Zeiger-Dereferenzierung' beim Zugriff auf Kartenelemente in Go um?. 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