项目地址
https://github.com/codegangsta/inject
用法
注入到函数
package main import ( "fmt" "github.com/codegangsta/inject" ) type MyStr interface{} func TestFunc(name string, age int, isMarried bool, comment MyStr) { fmt.Printf("name: %s, age: %d, isMarried: %t, comment: %s\n", name, age, isMarried, comment) } func main() { inj := inject.New() // 依赖注入 - 不知道参数类型时构造函数参数 inj.Map("lee") inj.Map(18) inj.Map(false) inj.MapTo("like spicy food!", (*MyStr)(nil)) // 控制反转 - 调用函数 inj.Invoke(TestFunc) }
注入到结构体
package main import ( "fmt" "github.com/codegangsta/inject" ) type MyStr interface{} type People struct { Name string `inject` Age int `inject` IsMarried bool `inject` Comment MyStr `inject` } func main() { p := People{} inj := inject.New() // 依赖注入 - 不知道属性类型时构造结构体属性 inj.Map("lee") inj.Map(18) inj.Map(false) inj.MapTo("like spicy food!", (*MyStr)(nil)) // 控制反转 - 解析到结构体 inj.Apply(&p) fmt.Printf("%v\n", p) }
文档更新时间: 2024-04-20 10:57 作者:lee