/injectgo

A golang inject module.

Primary LanguageGoMIT LicenseMIT

injectgo

License: MIT Build Status Godoc

A golang inject module.

Usage

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)