我可以使用指向嵌套结构的指针作为接收器参数吗?
Can I use a pointer to a nested struct as a receiver parameter?
通过使用 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()
通过使用 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()