乐趣区

关于golang:Go工程化结构

一、构造要点阐明:

(一)、我的项目的骨干:/cmd

每个我的项目的目录名应该与你想要的可执行文件的名称相匹配,例如:/cmd/myapp。不要在这个目录中搁置太多的代码,如果代码是能够导入其余我的项目中应用,则应该放在 /pkg 目录下。如果代码不是可重用的,或者不心愿其他人重用,应该把代码放在 /internal 目录中。

(二)、私人的应用程序和代码库:/internal

这是你不心愿其他人在其应用程序或者库中导入代码,这个布局是由 Go 编译器自身来执行的。须要留神的是:internal 目录并不局限于顶级目录,还能够在其余的目录下创立。能够向 internal 目录中增加额定的构造,以分隔共享和非共享的外部代码。这不是必须的(特地是对于较小的我的项目),然而最好有可视化的线索来显示预期的包的用处。理论的应用程序的代码能够放在 /internal/app 目录下(例如:/internal/app/myapp),这些应用程序共享的代码能够放在 /internal/pkg 目录中(例如:/internal/pkg/myprovilb)。因为咱们习惯把相干的服务,比方账号服务,外部有 rpc、job、admin 等,相干的服务整合到一起后须要辨别 app。繁多的服务能够去掉 /internal/myapp。

(三)、内部程序应用的库代码:/pkg

内部程序能够应用的库代码(例如:/pkg/mypubliclib)。其余的我的项目会导入这些库,所以在这里放的货色应该谨慎。/pkg 目录中能够参考 Go 规范库的组织形式,依照性能分类。/internal/pkg 个别用于我的项目内的跨多利用的公共共享代码,然而其作用域仅在单个我的项目工程内。

留神:internal 目录是确保公有包不可导入的更好办法,因为它是 Go 强制执行的,/pkg 目录仍是一种很好的形式,能够显式的示意该目录中的代码对于其他人来说能够平安应用的好办法

(四)、我的项目根底库:/kit

每个公司都应该为不同的微服务创立一个对立的 kit 工具包我的项目 (根底库 / 框架) 和 app 我的项目。根底库 kit 为独立我的项目,公司级倡议只有一个,依照性能目录来拆分会带来不少的管理工作,所以倡议合并整合。
kit 我的项目必须具备的特点:
对立
规范库形式布局
高度形象
反对插件

退出移动版