我可以使用指向嵌套结构的指针作为接收器参数吗?

问题描述

通过使用 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()