首頁 >後端開發 >Golang >Go 在指標類型上設定的方法可以用常規型別呼叫嗎?

Go 在指標類型上設定的方法可以用常規型別呼叫嗎?

Barbara Streisand
Barbara Streisand原創
2024-11-17 20:37:01654瀏覽

Can Go's Method Set on Pointer Types Be Called with Regular Types?

Go 方法集:可以在常規型別上呼叫指標型別的方法嗎?

Go 規範將類型的方法集定義為接收器類型與該類型相符的所有方法。然而,它也指出指標類型(*T)的方法集既包括其自身的方法,也包括其對應的非指標類型(T)的方法。這就提出了一個問題:你可以在常規型別上呼叫指標類型的方法嗎?

儘管規範有這樣的措辭,但答案是否定的。您不能直接呼叫設計為使用常規類型 (T) 在指標類型 (*T) 上呼叫的方法。這是因為方法呼叫必須與接收者類型完全匹配。

但是,編譯器提供了一個巧妙的解決方法。它會自動取消引用常規類型接收器並呼叫指標類型方法。這相當於手動取消引用接收者並明確呼叫指標類型方法: user.SayWat() 變成 (&user).SayWat().

以上是Go 在指標類型上設定的方法可以用常規型別呼叫嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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