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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么結(jié)構(gòu)體可以作為接口傳遞給函數(shù)?

為什么結(jié)構(gòu)體可以作為接口傳遞給函數(shù)?

Go
守候你守候我 2023-07-17 15:01:45
我有一些示例代碼,將接口作為輸入,如下所示。type RouteGuideServer interface {? ? ? ? ...}func RegisterRouteGuideServer(s *grpc.Server, srv RouteGuideServer) {? ? s.RegisterService(&_RouteGuide_serviceDesc, srv)}這一切都很好,但是當(dāng)實(shí)現(xiàn)這個(gè)服務(wù)器時(shí),我們有以下代碼,它為函數(shù)提供了一個(gè)結(jié)構(gòu)(實(shí)現(xiàn)接口),如下所示。type routeGuideServer struct {? ? ? ? ...}...pb.RegisterRouteGuideServer(grpcServer, &routeGuideServer{})我希望當(dāng)給出錯(cuò)誤的類型時(shí)會(huì)拋出錯(cuò)誤。為什么這有效?我感覺這個(gè)應(yīng)該不行吧?我會(huì)感謝任何反饋,謝謝!
查看完整描述

2 回答

?
紅糖糍粑

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊

Aninterface定義了一組方法。任何具有這些方法的類型都會(huì)“實(shí)現(xiàn)”該接口。


在您的例子中,您有一個(gè)實(shí)現(xiàn)接口的所有方法的結(jié)構(gòu)類型。這意味著該結(jié)構(gòu)類型的值可以在需要此類接口的任何地方使用。當(dāng)您像以前一樣將結(jié)構(gòu)體值傳遞給函數(shù)時(shí),編譯器將檢查該值是否實(shí)現(xiàn)了該接口的所有函數(shù),如果實(shí)現(xiàn)了,則將該值作為接口發(fā)送給該函數(shù)。在函數(shù)外部,您擁有結(jié)構(gòu)體值,但在函數(shù)內(nèi)部,您只能看到該接口的函數(shù)。但是,您可以進(jìn)行類型斷言并恢復(fù)該接口的值:


func (f interfaceType) {

   if k, ok := f.(myType); ok {

      // Here, k is the value of the interface, which is of type "myType"

   }


查看完整回答
反對(duì) 回復(fù) 2023-07-17
?
慕斯709654

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊

這是有效的,因?yàn)?code>*routeGuideServer實(shí)現(xiàn)了RouteGuideServer.?如果錯(cuò)誤類型沒有實(shí)現(xiàn)RouteGuideServer,你會(huì)得到一個(gè)錯(cuò)誤:

錯(cuò)誤類型未實(shí)現(xiàn)RouteGuideServer(缺少“某些”方法)


查看完整回答
反對(duì) 回復(fù) 2023-07-17
  • 2 回答
  • 0 關(guān)注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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