Eine Geschichte von Null-Schnittstellen und Zeigerkonvertierungen
In Golang der Versuch, eine Null-Schnittstelle direkt in einen Zeiger eines bestimmten Datentyps umzuwandeln , wie im bereitgestellten Codeausschnitt gezeigt, führt zu einem Fehler. Dieser Fehler tritt auf, weil eine Null-Schnittstellenvariable Werte verschiedener dynamischer Typen oder überhaupt keinen Wert enthalten kann.
Die Typzusicherung n = p.(*Node) schlägt fehl, weil erwartet wird, dass die Schnittstellenvariable p einen Nicht-Typ enthält -nil Wert vom Typ *Node. Da p jedoch Null ist, kann es nicht in einen bestimmten Datentyp umgewandelt werden.
Ein alternativer Ansatz besteht darin, Null explizit einer Zeigervariablen eines bestimmten Datentyps zuzuweisen, indem die folgende Syntax verwendet wird: n = (*Node )(Null). Diese Zuweisung setzt den Zeiger n so, dass er auf den Nullwert des *Node-Typs zeigt, der Null ist.
Um Null-Schnittstellenwerte effektiver zu verarbeiten, sollten Sie die Verwendung der „Komma-OK“-Form der Typzusicherung in Betracht ziehen: if n, ok := p.(*Node); OK { ... }. Dieses Formular gibt zwei Werte zurück: n, der der Wert der Schnittstelle ist, wenn die Typzusicherung erfolgreich war, und ok, der angibt, ob die Typzusicherung erfolgreich war. Wenn der Schnittstellenwert Null ist, ist ok falsch und n ist der Nullwert des Zieltyps.
Das obige ist der detaillierte Inhalt vonWarum schlägt die direkte Konvertierung einer Nil-Schnittstelle in einen Zeiger in Go fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!