构建 Go 项目最佳实践

Table of Contents

1. 目录结构

Go 目前没有一个权威性质的 Web framework(类似 Python 的 Django/Flask,Java 的 SprintBoot 等),大部分 Web 框架所做的事情 是 router + middleware 的方式。并没有提供了一个如何组织项目代码,划分模块的规范。这可能与 Go 生态圈的文化和语言的应用场景有关。

尽管如此,还是需要一个规范性的东西来约束,方便协作。评价比较高的有 project-layout,它参考了主流的 Go 开源代码的组织方式, 2019 年开始我也进行了断断续续的翻译 Go 项目布局标准。现在官方也支持 中文版 了。实际体验下来,大体思路是没错的,但对于构建一个 Web 服务 来说,还是太过宽泛了。所以我根据自己的经验,在 Go project layout 的基础上整理了一套属于自己的规范。

2. 包管理

以前用 govender,go 1.11 之后统一使用 module 了。包管理工具

3. package 发布

一个 github 的 Go 项目如何发布?Go 项目发布

4. 技术选型

5. 编码规范

6. 服务质量

7. 上线

First created: 2021-04-27 15:33:45
Last updated: 2021-11-15 Mon 10:18
Power by Emacs 27.2 (Org mode 9.4.6)