Introduction to VPS and Web Technology Development

golang wire注入代码案例

自由vps golang
以下是wire注入的依赖 

wire这个工具可以根据wire.build具体返回的对象,对对象的所有依赖进行实例化,无关乎实例化方法的顺序

例如

main.go
package main
type A struct {
 
}


func NewA()*A{
   return &A{}
}


type B struct {
 
}
func NewB()*B{
   return &B{}
}


type C struct {
 
}

func NewC()*C{
   return &C{}
}

type D struct {
      a *A
      B *B
      c *C

}

func NewD(a *A,b *B,c *C){
    return D{
        a:a,b:b,c:c
        }
}

var aSet = wire.NewSet(NewA)
var bSet = wire.NewSet(NewA)
var cSet = wire.NewSet(NewA)

func main(){
   InitD()
}




wire.go
package main

function InitD()*D{
    wire.build(aSet ,bSet,cSet,NewD)
   return nil

}


注意 上述每一个方法的都能找到对应的依赖值  比如aSet返回的是*A,bSet返回的是*B,cSet同理,他们都给NewD提供了参数,所以NewD能够正常运行注入,以至于能给InitD返回注入对象*D  通过*D在我们框架内就是框架的main主协程变量,在整个main的生命周期内都有效,一半用作框架的实例变量


使用chatGPT寻求答案
标签: 暂无标签

免责声明:

本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:master@freevpsweb.com

同类推荐
评论列表