gpt4 book ai didi

go - 访问另一个结构上的函数

转载 作者:数据小太阳 更新时间:2023-10-29 03:44:15 26 4
gpt4 key购买 nike

将 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com