go 依赖注入
库
利用库 github.com/facebookgo/inject
例子
package main import ( "fmt" "github.com/facebookgo/inject" ) type DBEngine struct { Name string } type UserDB struct { Db *DBEngine `inject:""` } type UserService struct { Db *UserDB `inject:""` } type App struct { Name string User *UserService `inject:""` } func (a *App) Create() string { return "create app,in db name:" + a.User.Db.Db.Name+" app name :"+ a.Name } type Object struct { App *App } func Init() *Object { db := DBEngine{Name: "db1"} var g inject.Graph app := App{Name: "go-app"} _ = g.Provide( &inject.Object{Value: &app},&inject.Object{Value: &db},) _ = g.Populate() return &Object{ App: &app,} } func main() { obj := Init() fmt.Println(obj.App.Create()) }
打印结果
create app,in db name:db1 app name :go-app
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。