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

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

覆蓋 []interfaces{} 并獲取每種類型的通道字段

覆蓋 []interfaces{} 并獲取每種類型的通道字段

Go
慕桂英3389331 2021-12-07 19:34:56
我會盡量把它說清楚,首先在我的腦海里。我有一個接口和幾個通過聲明方法繼承它的類型。非常漂亮和聰明的繼承方式。然后我有一個“超級” Type Thing,所有其他類型都嵌入了它。該Thing結(jié)構(gòu)具有 Size int 和 Out chan 屬性我想理解的是為什么我可以.GetSize()從兩個子結(jié)構(gòu)中獲取 size 的值,但是我在 channel 字段上沒有同樣的成功.GetChannel()(*ndr,我用它在 goroutines 和它們的調(diào)用者之間進行通信)...我明白了 t.GetChannel undefined (type Measurable has no field or method GetChannel)它可能有助于邏輯的演示:package mainimport (    "fmt")type Measurable interface {    GetSize() int}type Thing struct {    Size int    Out  chan int}type Something struct{ *Thing }type Otherthing struct{ *Thing }func newThing(size int) *Thing {    return &Thing{        Size: size,        Out:  make(chan int),    }}func NewSomething(size int) *Something   { return &Something{Thing: newThing(size)} }func NewOtherthing(size int) *Otherthing { return &Otherthing{Thing: newThing(size)} }func (s *Thing) GetSize() int         { return s.Size }func (s *Thing) GetChannel() chan int { return s.Out }func main() {    things := []Measurable{}    pen := NewSomething(7)    paper := NewOtherthing(5)    things = append(things, pen, paper)    for _, t := range things {        fmt.Printf("%T %d \n", t, t.GetSize())    }    for _, t := range things {        fmt.Printf("%+v \n", t.GetChannel())    }    // for _, t := range things {    // fmt.Printf("%+v", t.Thing.Size)    // }}注釋代碼是我正在嘗試學(xué)習(xí)的另一件事。我可以通過使用在超類型上聲明的方法來獲取值,但不能直接從子類型訪問。當然,我可以解決類型,t.(*bothTheThingTypes).Size但我失去了動態(tài)性,我沒有完全理解這個......
查看完整描述

1 回答

?
繁星點點滴滴

TA貢獻1803條經(jīng)驗 獲得超3個贊

我想了解的是為什么我可以從兩個子結(jié)構(gòu)中獲取 size .GetSize() 的值,但是我在通道字段 .GetChannel() 上沒有同樣的成功


type Measurable interface {

    GetSize() int

}


...


things := []Measurable{}

for _, t := range things {

    fmt.Printf("%+v \n", t.GetChannel())

}

我可能忽略了這一點,但這似乎是由于您的Measurable界面沒有GetChannel方法這一事實造成的


查看完整回答
反對 回復(fù) 2021-12-07
  • 1 回答
  • 0 關(guān)注
  • 218 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號