A golang inject module.
type Client struct {
Address string
}
type Logger interface {
Println(interface{})
}
type Model struct {
Cli *Client `inject:""`
Log Logger `inject:""`
}
type dummyLogger struct{}
func (l *dummyLogger) Println(s interface{}) {
fmt.Println(s)
}
// ...
c := injectgo.NewContainer()
m := &Model{}
c.Provide(m, &Client{Address: "127.0.0.1:8080"})
c.ProvideFunc(injectgo.InjectFunc{
Fn: func() (Logger, error) {
return &dummyLogger{}, nil
},
Label: "",
})
c.Populate(nil)
m.Log.Println(m.Cli)