通過使用作為接收器,我可以引用B作為但是我想通過具有與父結(jié)構(gòu)的方法不同的接收器,將與B嵌套結(jié)構(gòu)相關(guān)的方法保留在它們自己的命名空間中(如果您愿意的話)。(并避免功能名稱沖突)x *Ax.B type A struct { //... B struct { // ... } } //... func (x *A.B) method() { }錯(cuò)誤:A.B undefined (type A has no method B) compiler(MissingFieldOrMethod)
1 回答

胡子哥哥
TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊
我剛剛發(fā)現(xiàn)我必須在結(jié)構(gòu)A之外定義B的類型,并直接在接收器中引用B。
在我的第一個(gè)示例中,B 是 A 的未命名類型的屬性,當(dāng)然,對于接收器參數(shù),您必須引用命名類型。
(或者有沒有辦法從其實(shí)例中引用未命名的結(jié)構(gòu)?
更正后的代碼:
type A struct {
//...
b B
}
type B struct {
}
}
//...
func (x *B) method() {
}
//...
a A = &A{}
a.b.method()
- 1 回答
- 0 關(guān)注
- 75 瀏覽
添加回答
舉報(bào)
0/150
提交
取消