Pointers 如何共享嵌入式结构指针
我有以下代码: 具有匿名字段的结构控制器Pointers 如何共享嵌入式结构指针,pointers,struct,go,Pointers,Struct,Go,我有以下代码: 具有匿名字段的结构控制器 type controller struct { *base.Controller store *data } 如您所见,*base.Controller是匿名字段指针。 然后是由*base.Controller组成的第二个结构 type expiredError struct { *base.Controller local string } 我初始化了控制器结构,如下所示: c := &controller
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
您可以通过提及父类的实例来尝试引用匿名字段:
rcv.Controller
(因为匿名字段的“名称”与字段的类型相同)
请参见中的类似示例:
- “
- “”
rcv.Controller
可以工作。@JimB确实可以。我已相应地编辑了答案。我应该知道,因为我昨天使用了一个类似的示例。类型base.Controller不是一个表达式
,意味着您需要的是某个对象的实例,而不是类型。