在main包下,建立wire.go
在內部隨便建立func方法,內部要包含wire.Build()
裡面為對應的構造器函式。可以透過wire.Newset()
將多個Provider函式串聯一起(之間不一定有關係),然後觸發wire.Build呼叫。如果有全域性要使用的物件,可以使用wire.Value
定義(僅針對物件)。且這種物件需要透過指標傳遞,否則要麼提示找不到,要麼提示重複了。
wire.go
type AppInfo struct{
}
func myWire(test *Test){
appInfo := &AppInfo{}
wire.Build(ServiceProvider, NewConfigService,wire.value(appInfo))
}
main.go
// 在需要初始化執行時,觸發此方法裝載。即wire僅是幫你生成了依賴關係的程式碼,還需要自己呼叫。
對於方法中的入參項,會在物件構建時,自動填入
myWire(&test)
service.go
ServiceProvider := wire.NewSet(NewUserService)
注意事項
wire物件的地址引用
如果方法中引入的是一般的構造器使用比較隨意,如果是物件要使用指標指向
,否則要麼沒有,要麼說是多個型別。
執行
當執行wire
後,成功時會生成wire_gen.go檔案。
windows使用者,需要在git的工具中執行,windows自有控制檯不可以