"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!