Open chenyahui opened 3 years ago
网上博客看到写的最通透的就是这篇了~
写得好清楚,看完就懂了
@WinniCoder 写得好清楚,看完就懂了
要不要这么官方
winni喊我们组来学习这篇
@zhiyi10 winni喊我们组来学习这篇 +1
这个库是有bug的。如果存在环,且环全部是private类型,就会陷入死循环
type A struct {
B *B
C *C `inject:"private"`
}
type B struct {
age int
}
type C struct {
D *D `inject:"private"`
}
type D struct {
//name string
A *A `inject:"private"`
}
func TestAAAA(t *testing.T) {
b := &B{
age: 6,
}
a := &A{}
vars := make([]interface{}, 0)
vars = append(vars, a)
vars = append(vars, b)
inject.Populate(vars...)
}
我想问一下 是不是说按照这种依赖注入的话 当前的泛型也可以依赖注入
@byene0923 这个库是有bug的。如果存在环,且环全部是private类型,就会陷入死循环
type A struct { B *B C *C `inject:"private"` } type B struct { age int } type C struct { D *D `inject:"private"` } type D struct { //name string A *A `inject:"private"` } func TestAAAA(t *testing.T) { b := &B{ age: 6, } a := &A{} vars := make([]interface{}, 0) vars = append(vars, a) vars = append(vars, b) inject.Populate(vars...) }
的确是有循环问题。不过这种依赖自行设置struct field的注入方式,似乎也没有很好的解决方案
@Ssummer520 我想问一下 是不是说按照这种依赖注入的话 当前的泛型也可以依赖注入
还没试过在泛型下使用,我这边尝试下后再给出结论
https://www.cyhone.com/articles/facebookgo-inject/
依赖注入是一个经典的设计模式,在解决复杂的对象依赖关系方面是一个非常行之有效的手段。 对于有反射功能的语言来说,实现依赖注入都比较方便一些。在 Golang 中有几个比较知名的依赖注入开源库,例如 google/wire、uber-go/dig 以及 facebookgo/inject 等。 本文将基于 facebookgo/inject 介绍依赖注入, 接下来将会着重讨论以下几点内容: 依赖注