1 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
如果您繼續(xù)閱讀規(guī)范的同一部分,您會(huì)注意到以下內(nèi)容:
給定一個(gè)結(jié)構(gòu)類型 S 和一個(gè)定義類型 T,提升的方法包含在結(jié)構(gòu)的方法集中,如下所示:
如果 S 包含嵌入字段 T,則 S 和 *S 的方法集都包含帶有接收者 T 的提升方法。*S 的方法集還包括帶有接收者 *T 的提升方法。
如果 S 包含嵌入字段 *T,則 S 和 *S 的方法集都包含帶有接收器 T 或 *T 的提升方法。
您的結(jié)構(gòu)B
沒(méi)有明確定義的方法,但B
的方法集隱含地包括來(lái)自嵌入字段的提升方法。在這種情況下,嵌入字段是一個(gè)帶有方法的接口f()
。您可以使用任何滿足該接口的對(duì)象,并且它的f()
方法將自動(dòng)成為為B
.
另一方面,您的C
結(jié)構(gòu)有一個(gè)命名字段。上的方法Imp
不會(huì)自動(dòng)添加到C
方法集中。相反,要從 訪問(wèn)f()
方法Imp
,您需要專門(mén)調(diào)用C.Imp.f()
.
最后:您使用接口作為(嵌入或不嵌入)字段這一事實(shí)并不重要,它很容易成為另一個(gè)具有f()
方法的結(jié)構(gòu)。重要的部分是是否f()
成為父結(jié)構(gòu)的方法集的一部分,這將允許它實(shí)現(xiàn)A
與否。
- 1 回答
- 0 關(guān)注
- 111 瀏覽
添加回答
舉報(bào)