1 回答

TA贡献1811条经验 获得超5个赞
我最终创建了一个domain包含接口和定义的包Config。
所以domain/domain.go我有
package domain
type Config struct {
Cache
}
type Runner interface {
Run() string
}
type Cache interface {
// ...
}
如上所述,跑步者在子包中构建。我不导出类型,而是在每个包中都有一个函数收集所有类型并将它们作为接口返回。
runner/blue/blue.go:
package blue
import "my/domain"
func All(config domain.Config) (list []domain.Runner) {
list = append(list, fooRunner{Config: config})
list = append(list, barRunner{Config: config})
return
}
runner/runner.go:
package runner
import (
"my/runner/blue"
"my/runner/red"
"my/runner/domain"
)
func All(config domain.Config) (list []domain.Runner) {
list = append(list, blue.All(config)...)
list = append(list, red.All(config)...)
return
}
- 1 回答
- 0 关注
- 140 浏览
添加回答
举报