首頁 >後端開發 >Golang >為什麼 Go 在連結方法時傳回「無法取得位址」或「無法呼叫指標方法」錯誤?

為什麼 Go 在連結方法時傳回「無法取得位址」或「無法呼叫指標方法」錯誤?

Barbara Streisand
Barbara Streisand原創
2024-12-12 18:18:14441瀏覽

Why Does Go Return

理解 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn