亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Go 中調用嵌入類型的重載方法的正確方法

在 Go 中調用嵌入類型的重載方法的正確方法

Go
九州編程 2021-10-04 12:54:49
我有一個界面: package pkg type BaseInterface interface {     func Nifty() bool     func Other1()      func Other2()     ...     func Other34123() }和一個實現它的結構: package pkg type Impl struct {} func (Impl) Nifty() bool { ... }然后是另一個結構,它想要嵌入第一個并執行它自己的 Nifty(): package myOtherPackage import "pkg" type ImplToo struct {     *pkg.Impl } func (it ImplToo) Nifty() bool { ... something else ... }這有點像在 OOP 語言中具有方法覆蓋的類繼承。我想知道如何做 implToo.super().Nifty() 的等價物——也就是說,從 ImplToo Nifty() 實現中,調用 pkg.Impl Nifty() 實現。什么是正確的轉換,it以便我可以做到這一點?我嘗試的一切都會在 ImplToo 的 Nifty() 上產生無限遞歸,或者一些編譯器錯誤,例如:invalid type assertion: (&it).(BaseInterface) (non-interface type *it on left)......或者很多變化。
查看完整描述

2 回答

?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

您正在尋找;


 type ImplToo struct {

     pkg.Impl

 }


func (it ImplToo) Nifty() bool { return it.Impl.Nifty() }

您對指針的使用不一致,這可能是(不是積極的)問題的一部分。如果你想讓嵌入類型成為一個指針,那么讓你的方法接收類型也是一個指針以避免這個問題。


如果要顯式使用嵌入類型中的方法,請使用通常具有屬性名稱的類型來引用它。


查看完整回答
反對 回復 2021-10-04
  • 2 回答
  • 0 關注
  • 245 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號