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"
}

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(缺少“某些”方法)
- 2 回答
- 0 關(guān)注
- 108 瀏覽
添加回答
舉報(bào)