Verstehen der Fehler „Adresse kann nicht übernommen werden“ und „Zeigermethode kann nicht aufgerufen werden“
Beim Arbeiten mit Go können Fehler auftreten B. „Die Adresse von kann nicht übernommen werden“ oder „Zeigermethode kann nicht aufgerufen werden“, verwirren diejenigen, die das lernen Sprache.
Das Problem:
Bedenken Sie den folgenden Go-Code:
diff := projected.Minus(c.Origin) dir := diff.Normalize() // error: cannot call pointer method on Vector3 // Vector3 methods func (a *Vector3) Minus(b Vector3) Vector3 { ... } func (a *Vector3) Normalize() Vector3 { ... }
Die zweite Zeile verursacht Kompilierungsfehler, weil Vector3.Normalize() erfordert einen Zeigerempfänger, d. h. es erwartet einen Zeiger auf einen Vector3-Wert (*Vector3) anstelle eines Vector3 Wert.
Warum es passiert:
Rückgabewerte von Funktions- und Methodenaufrufen können in Go nicht adressiert werden. Daher kann der Compiler im zweiten Beispiel die Adresse des Ergebnisses von Vector3.Minus() nicht übernehmen, was verhindert, dass er Normalize() für diesen Wert aufruft.
Mögliche Lösungen:
Das obige ist der detaillierte Inhalt vonWarum kann ich keine Zeigermethode für das Ergebnis eines Go-Funktionsaufrufs aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!