为了账号安全,请及时绑定邮箱和手机立即绑定

指针引用未存储在我的 go 程序中的结构中

指针引用未存储在我的 go 程序中的结构中

Go
慕尼黑的夜晚无繁华 2023-05-04 17:36:57
我是 go-lang 的新手,我试图弄清楚如何正确使用结构和依赖注入。我有点卡住了,因为我无法正确存储对另一个结构的引用。这是我生成 CommandController 的方法。存在对 iris.Application 的有效引用。func ProvideCommandController(application *iris.Application, commandRepository command.CommandRepository) (*interfaces.CommandController, error) {commandController := interfaces.CommandController{}commandController.Init(application, commandRepository)commandController.Start()return &commandController, nil}该结构如下所示:type CommandController struct {    commandRepository command.CommandRepository    app   *iris.Application}func (c CommandController) Init(app *iris.Application, repository command.CommandRepository) {    c.app = app    c.commandRepository = repository}func (c CommandController) Start() {    c.app.Get("/command", c.readAll)    c.app.Get("/command/{id:string}/execute", c.executeCommand)    c.app.Run(iris.Addr(":8080"))}当ProvideCommandController函数被执行时,我可以调试并观察到所有引用看起来都很好。不幸的是,commandController.Start()由于c.app为零而失败。我错过了什么理解?不知何故,存储的引用在 Init 和 Start 函数调用之间被删除。提前致谢 :)
查看完整描述

1 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

改变

func (c CommandController) Init(app *iris.Application, repository command.CommandRepository)

func (c *CommandController) Init(app *iris.Application, repository command.CommandRepository)

由于在您的版本中按值Init接收,因此它所做的任何更改都不会出现在方法之外。ccInit


查看完整回答
反对 回复 2023-05-04
  • 1 回答
  • 0 关注
  • 73 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信