基本例子
import ( "github.com/sohaha/zlsgo/zdi" ) // Conf 配置结构体 type Conf struct { Addr string } // User 用户 type User struct { Name string } // Fs 接口 type Fs interface {} func main(){ // 初始化 di := zdi.New() // 直接注入一个初始化好的变量 di.Maps(Conf{Addr: "127.0.0.1"}) // 延迟注入,用到时候才会执行 di.Provide(func(c Conf) *User { return &User{} }) // 注入接口 di.Map(Conf{}, zdi.WithInterface((*Fs)(nil))) // 调用 di.Invoke(func(c Conf,u *User){ // 这里可以用 Conf 了 }) // 取值 var c *Conf di.Resolve(&c) }
高级功能
文档待补充
- 预设调用模板提高性能
- 注入绑定结构体