• 5. 项目结构

    5. 项目结构

    我们来谈谈如何将包组合到项目中。 通常一个项目是一个 git 仓库,但在未来 Go 语言开发人员会交替地使用 moduleproject

    就像一个包,每个项目都应该有一个明确的目的。 如果你的项目是一个库,它应该提供一件事,比如 XML 解析或记录。 您应该避免在一个包实现多个目的,这将有助于避免成为 common 库。

    贴士:据我的经验,common 库最终会与其最大的调用者紧密相连,在没有升级该库与最大调用者的情况下是很难修复的,还会带来了许多无关的更改以及API破坏。

    如果你的项目是应用程序,如 Web 应用程序,Kubernetes 控制器等,那么项目中可能有一个或多个 main 程序包。 例如,我编写的 Kubernetes 控制器有一个 cmd/contour 包,既可以作为部署到 Kubernetes 集群的服务器,也可以作为调试目的的客户端。