5. 项目结构
我们来谈谈如何将包组合到项目中。 通常一个项目是一个 git
仓库,但在未来 Go 语言开发人员会交替地使用 module
和 project
。
就像一个包,每个项目都应该有一个明确的目的。 如果你的项目是一个库,它应该提供一件事,比如 XML
解析或记录。 您应该避免在一个包实现多个目的,这将有助于避免成为 common
库。
贴士:据我的经验,
common
库最终会与其最大的调用者紧密相连,在没有升级该库与最大调用者的情况下是很难修复的,还会带来了许多无关的更改以及API破坏。
如果你的项目是应用程序,如 Web
应用程序,Kubernetes
控制器等,那么项目中可能有一个或多个 main
程序包。 例如,我编写的 Kubernetes
控制器有一个 cmd/contour
包,既可以作为部署到 Kubernetes
集群的服务器,也可以作为调试目的的客户端。