理解 Go 中與指標相關的錯誤
在 Go 中,你可能會遇到諸如「cannot take the address of」和「cannot使用指標時,呼叫指標方法「on」。運行的程式碼:
但是,如果我們嘗試將這兩個操作結合起來成一行:diff := projected.Minus(c.Origin) dir := diff.Normalize()我們會遇到上述錯誤。我們需要深入研究Go 中值的接收器類型和可尋址性。 (*Vector3),表示它需要一個指向Vector3值的指標來呼叫。時,編譯器會自動取得diff 變數(&diff) 的位址來符合所需的指標接收器類型。值,該值不可尋址。 Normalize()。 🎜>
dir := projected.Minus(c.Origin).Normalize()賦值給變數並分別呼叫方法:
儲存將Minus()的結果放入變數中,然後對該變數呼叫Normalize()。直接對回傳值呼叫Normalize()。更改Normalize() 的接收者為值接收者(Vector3),傳回類型為指標(*Vector3)。自身的指針,然後可以使用該指針調用Normalize()。改接收器,而值接收器則不允許。 Vector3 這樣的簡單類型,使用通常不會有明顯的效能問題指標。
以上是為什麼 Go 在連結方法時傳回「無法取得位址」或「無法呼叫指標方法」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!