我正在开发我的第一个真正的 go 应用程序,并试图将我的手放在应该结构化的代码文件上。
我的代码的主要部分将是一些类型,它们都实现了一个公共接口。
type Runner interface { Run() string}
他们将被打包。由于接口实现的数量将非常大,我想将它们(语义上)拆分为几个子包。
runner/ blue/ red/
该Runner
实现需要访问在我的应用程序中别处定义的几个其他接口(例如,Cache
和Secret
)。这些目前在单独的包中定义和实现。我的计划是使用一个Config
结构,它包含所有这些实用程序接口并将其传递给Runner
实现。
我不确定如何最好地处理这些子包以及在哪里放置Config
和接口声明。我的直觉方法是在包中同时定义Config
结构和Runner
接口,runner
并且只从那里返回一个[]Runner
集合,但这违反了这个建议。此外,所需的导入数量和遇到被禁止的循环引用的危险让我觉得,我的解决方案违背了最佳实践。
有什么建议可以改进我的代码结构吗?添加一个common
包含我所有接口定义和Config
结构的包是否可取?
四季花海
相关分类