🪢

依赖注入

基本例子

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) }
 

高级功能

文档待补充
  1. 预设调用模板提高性能
  1. 注入绑定结构体