当前位置: 首页 > 网络应用技术

带您了解GO项目标准目录的布局

时间:2023-03-06 22:31:45 网络应用技术

  该文章首先发表在公共帐户[程序员阅读]中,欢迎来到。

  很多时候,当我们开发一个简单的GO项目时,我们不需要在项目的目录布局中纠缠,因为我们会将所有GO源文件扔到项目的根目录中,就像以下内容:

  但是,当我们的项目变得复杂时,我们需要考虑如何组织我们的项目。目前,您可能会认为正式的GO项目目录布局很好。但是标准GO项目标准目录布局。

  目前,GO社区开发人员在项目范围项目中给出的目录布局更为建议,例如:::

  但是,官员不建议这种项目布局。以下是GO团队在项目范围目录中开发负责人Russ Cox的工作:

  通常,我们可以将GO项目分为两个类别:应用程序项目和图书馆项目。

  应用程序项目和库项目的目录布局略有不同。

  对于申请项目,我们可以参考GO项目本身,以及一些以GO语言开发的优质开源项目(例如Docker,Kubernetes等)等。通过研究这些项目的目录布局,我们可以抽象以下标准目录目录

  可执行文件目录如果项目具有多个可执行文件,则可以将其放置在不同的子目录中,例如上面示例中的App1和App2目录。

  内部私人代码,其他项目将在引入时报告错误。

  请注意,这并不是说PKG必须以前缀命名。您可以任意满足命名规格的名称,例如服务,模型等。

  也就是说,PKG1和PKG2,上面示例中的PKGN软件包存储了项目的依赖关系,例如Internet,但是可以通过其项目引入此处存储的代码。

  该目录用于存储存储项目的依赖关系软件包,但是由于今天使用GO模块项目用于依赖关系管理,因此省略了此目录。

  如果我们的项目只有一个可执行文件,则可以将main.go文件直接写入根目录中,并且供应商可以省略。因此,可以进一步简化项目目录:

  库项目不需要执行文件。与申请项目相比,省略了CMD目录及其标准目录:

  如果我们的图书馆项目相对简单,我们可以使用一个扁平的项目布局,以写在袋子中,所有源代码目录都放在根目录中,例如:

  TIDERS的布局非常适合简单的图书馆项目。实际上,许多复杂的图书馆项目还将在根目录中放置大量代码,因为这样,当将其他项目引入项目包中时,路径将相对较短。例如,我们有一个结构A,放置在PKG1软件包和根目录中,领先路径是:

  好吧,在这里阅读,您必须了解GO应用程序项目和库项目目录的不同布局。

  但是,由于官方项目项目指定的项目布局,因此上述项目目录是社区发展的约定,这不是强制性的。您还可以自定义自己的GO项目目录布局,但是我认为,使用社区开发全部关注目录规范,它仍然有助于降低团队开发人员的认知和沟通成本。