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

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

Go - 如何明確聲明一個結(jié)構(gòu)正在實現(xiàn)一個接口?

Go - 如何明確聲明一個結(jié)構(gòu)正在實現(xiàn)一個接口?

Go
三國紛爭 2021-10-25 18:33:40
由于 Go 非常強調(diào)接口,我想知道如何明確聲明一個結(jié)構(gòu)正在實現(xiàn)一個接口,以便在某些方法丟失的情況下進行清晰和錯誤檢查?到目前為止,我已經(jīng)看到了兩種方法,我想知道哪種方法是正確的并且符合 Go 規(guī)范。方法 1 - 匿名字段type Foo interface{    Foo()}type Bar struct {    Foo}func (b *Bar)Foo() {}方法 2 - 顯式轉(zhuǎn)換type Foo interface{    Foo()}type Bar struct {}func (b *Bar)Foo() {}var _ Foo = (*Bar)(nil)這些方法是正確的,還是有其他方法可以做這樣的事情?
查看完整描述

3 回答

?
千萬里不及你

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

方法 2 是正確的,方法 1 您只是嵌入一種類型并覆蓋其功能。如果你忘記覆蓋它,你最終會得到一個 nil 指針解引用。


查看完整回答
反對 回復(fù) 2021-10-25
?
慕哥9229398

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

我很少需要聲明這一點,因為在我的包中幾乎總是有我使用結(jié)構(gòu)體作為接口的地方。我傾向于遵循在可能的情況下保持結(jié)構(gòu)不公開的模式,并且僅通過“構(gòu)造函數(shù)”函數(shù)提供它們。


type Foo interface{

  Foo()

}


type bar struct {}

func (b *bar)Foo() {}


func NewBar() Foo{

  return &bar{}

}

如果bar不滿足Foo,則不會編譯。我沒有添加構(gòu)造來聲明該類型實現(xiàn)了接口,而是確保我的代碼在某個時候?qū)⑺米鹘涌凇?/p>


查看完整回答
反對 回復(fù) 2021-10-25
?
梵蒂岡之花

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

你不能。在 Go 中,所有接口實現(xiàn)都是隱式的。你可以檢查一個類型是否實現(xiàn)了一個接口(這是它得到的最明確的)。如果我在我從事的項目中沒有記錯的話,我們只是在包的頂部針對類型實現(xiàn)的接口做了一些類型斷言,這與它所得到的一樣接近顯式。


查看完整回答
反對 回復(fù) 2021-10-25
  • 3 回答
  • 0 關(guān)注
  • 240 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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