我是 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 函数调用之间被删除。
提前致谢 :)
青春有我
相关分类