如何共享嵌入式struct指针

时间:2015-01-02 21:22:17

标签: pointers struct go

我有以下代码:

结构控制器,具有匿名字段。

type controller struct {
    *base.Controller
    store *data
}

如您所见,* base.Controller是匿名字段指针。 然后是第二个用* base.Controller组成的结构。

type expiredError struct {
    *base.Controller
    local string
}

我初始化控制器结构如下:

c := &controller{base.New(rw, r, false, "controller/account"), nil}
c.Title = "Activate account"
c.serve()

控制器上的base.Controller使用base.New()函数进行初始化。

现在我有了控制器方法,初始化expiredError结构,它应该将base.Controller的指针共享到expiredError的base.Controller。

func (rcv *controller) validate() error {

    ....

    // If time for activating account is expired
    if time.Now().Unix() > rcv.store.Expired {
        // Delete registered user from neo4j
        maccount.Delete(rcv.store.Email, rcv.Local)

        return &expiredError{base.Controller, rcv.Local}
    }

    return nil
}

我在这里遇到了编译错误

type base.Controller is not an expression

1 个答案:

答案 0 :(得分:3)

您可以通过提及父类的实例来尝试引用匿名字段:

rcv.Controller

(因为匿名字段的“名称”与字段的类型相同)

参见:

中的类似示例