如何共享嵌入式结构指针
How to share embedded struct pointer
我有以下代码:
具有匿名字段的结构控制器。
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
您可以尝试通过提及父实例来引用匿名字段 class:
rcv.Controller
(因为匿名字段的"name"与字段类型相同)
查看类似示例:
我有以下代码:
具有匿名字段的结构控制器。
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
您可以尝试通过提及父实例来引用匿名字段 class:
rcv.Controller
(因为匿名字段的"name"与字段类型相同)
查看类似示例: