将子包注入父包后,会出现"未找到适用于无效类型的提供程序"的错误。
The a.go could not inject the b.go interface, but the d.go is ok. The directory structure is as follows: services - a.go - c.go inpack - b.go testinpack - d.go Here is the code: a.go: package services import "GitHub.com/google/wire" "test.com/services/inpack" var TestAServiceSet = wire.NewSet(wire.Struct(new(TestAServiceDI), "*"), NewTestAService, NewITestAService) type TestAServiceDI struct { bservice inpack.ITestBService } type TestAService struct { serviceDI TestAServiceDI } func NewTestAService(serviceDI TestAServiceDI) *TestAService { return &TestAService{serviceDI} } type ITestAService interface {} func NewITestAService(service *TestAService) ITestAService { return service } c.go: package services import "GitHub.com/google/wire" var TestCServiceSet = wire.NewSet(wire.Struct(new(TestCServiceDI), "*"), NewTestCService, NewITestCService) type TestCServiceDI struct {} type TestCService struct { serviceDI TestCServiceDI } func NewTestCService(serviceDI TestCServiceDI) *TestCService { return &TestCService{serviceDI} } type ITestCService interface {} func NewITestCService(service *TestCService) ITestCService { return service } b.go: package inpack import "test.com/services" "GitHub.com/google/wire" var TestBServiceSet = wire.NewSet(wire.Struct(new(TestBServiceDI), "*"), NewTestBService, NewITestBService) type TestBServiceDI struct { c services.ITestCService } type TestBService struct { serviceDI TestBServiceDI } func NewTestBService(serviceDI TestBServiceDI) *TestBService { return &TestBService{serviceDI} } type ITestBService interface {} func NewITestBService(service *TestBService) ITestBService { return service } d.go: package testinpack import "GitHub.com/google/wire" "test.com/services/inpack" var TestDServiceSet = wire.NewSet(wire.Struct(new(TestDServiceDI), "*"), NewTestDService, NewITestDService) type TestDServiceDI struct { bservice inpack.ITestBService } type TestDService struct { serviceDI TestDServiceDI } func NewTestDService(serviceDI TestDServiceDI) *TestDService { return &TestDService{serviceDI} } type ITestDService interface {} func NewITestDService(service *TestDService) ITestDService { return service }
内容来源: google/wire