将 Go 1.11.x 与 echo 框架结合使用。
我有以下结构和函数
type AccountController struct {
....
}
func (c *AccountController) ActiveAccountID() int {
....
return 5
}
现在我想从另一个结构访问 ActiveAccountID
,我就是这样做的,
type TestController struct {
Account *AccountController
}
func (c *TestController) AddData(ec echo.Context) error {
....
id := c.Account.ActiveAccountID()
....
}
但是当我打印/使用 id var 时,它只是给我一个内存指针错误?
我已经尝试过帐户 Controller 删除指针,但我仍然遇到内存指针问题。那我做错了什么?
谢谢,
最佳答案
注意结构的结构
type TestController struct {
Account *AccountController
}
账户是一个指针。它被初始化为 nil
,所以如果你从未将它设置为指向某物,它将始终为 nil,并且当你尝试像这样在其上调用方法时,你将得到一个 nil 指针取消引用错误
// c *TestController
c.Account.ActiveAccountID()
设置方式/时间取决于您的用例。
另外,根据您的用例,您可以将其从指向嵌入式结构的指针更改
type TestController struct {
Account AccountController
}
这样它总是在结构中,但如果你从其他地方分配它,它将被复制。根据您的用例,这可能是不可取的。
关于go - 访问另一个结构上的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54260147/