第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

使用具有數據和成員函數的接口進行繼承的 GoLang 等效項

使用具有數據和成員函數的接口進行繼承的 GoLang 等效項

Go
qq_笑_17 2021-10-18 09:58:07
我是一個 golang 新手,所以如果我遺漏了一些明顯的東西,請原諒我。我有以下結構:type base interface {    func1()    func2()    common_func()}type derived1 struct {    base // anonymous meaning inheritence    data DatumType}type derived2 struct {    base // anonymous meaning inheritence    data DatumType}現在我想做以下事情:以某種方式保留 ' data DatumType'base以便查看定義base可以知道所有結構共有哪些數據。common_func()在一個地方實現,這樣派生的結構就不需要這樣做了。我嘗試使用接口實現該功能,但編譯失敗。我試圖創(chuàng)建一個結構并從中繼承,但沒有找到好的方法來做到這一點。有什么干凈的出路嗎?
查看完整描述

2 回答

?
SMILET

TA貢獻1796條經驗 獲得超4個贊

Go 中沒有繼承。使用成分:


type common struct {

    data DatumType

}


func (c *common) commonFunc() {

    // Do something with data.

}


type derived1 struct {

    common

    otherField1 int

}


// Implement other methods on derived1.


type derived2 struct {

    common

    otherField2 string

}


// Implement other methods on derived2.


查看完整回答
反對 回復 2021-10-18
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

Go 沒有繼承。相反,它提供了嵌入的概念。


在這種情況下,您不需要/不想定義base為interface. 使其成為結構并將函數定義為方法。然后嵌入base到您的派生結構中將為它們提供這些方法。


type base struct{

    data DatumType     

}

func (b base) func1(){


}


func (b base) func2(){


}


func (b base) common_func(){


}


type derived1 struct {

    base // anonymous meaning embedding

}


type derived2 struct {

    base // anonymous meaning embedding

}

現在你可以這樣做:


d := derived1{}

d.func1()

d.func2()

d.common_func()

并且(正如 David Budworth 在評論中指出的那樣)您可以base通過引用它的類型名稱來訪問字段,如下所示:


d.base.data = something


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

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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