问题描述
通过使用 x *A
作为接收器,我可以将 B 引用为 x.B
但是我想通过使用与父结构的方法不同的接收器,将与 B 嵌套结构相关的方法保留在它们自己的命名空间(如果你愿意的话)中。 (并避免函数名称冲突)
type A struct {
//...
B struct {
// ...
}
}
//...
func (x *A.B) method() {
}
错误:A.B undefined (type A has no method B) compiler(MissingFieldOrMethod)
解决方法
我刚刚发现我必须在结构 A 之外定义 B 的类型,并直接在接收器中引用 B。
在我的第一个例子中,B 是 A 的一个未命名类型的属性,当然对于接收器参数你必须引用一个类型。
(或者有没有办法从它的实例中引用一个未命名的结构?)
更正的代码:
type A struct {
//...
b B
}
type B struct {
}
}
//...
func (x *B) method() {
}
//...
a A = &A{}
a.b.method()