构建 Go 项目最佳实践

Table of Contents

1. 语言

2. 工程实践

2.1. 项目结构

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

尽管如此,还是需要一个规范性的东西来约束,方便协作。评价比较高的有 project-layout,它参考了主流的 Go 开源代码的组织方式, 2019 年开始我也进行了断断续续的翻译 Go 项目布局标准。现在官方也支持 中文版 了。

实际体验下来,大体思路是没错的,但对于构建一个 Web 服务来说,还是太过宽泛了。所以我根据自己的经验,在 Go project layout 的基础上整理了一套属于自己的规范。Go 项目目录结构.

2.2. 技术选型

2.3. 编码规范

基本上 Go programming language 已经说的挺清楚了,Effective Go 里又有补充,加之 Go 的社区命名都比较统一,日常命名应该没啥疑惑。

如果你还想单独把编码规范抽出来,可以看下 uber 的:uber go guide

2.4. 代码质量

2.5. 服务质量

3. 上线

First created: 2021-04-27 15:33:45
Last updated: 2024-01-30 Tue 15:18
Power by Emacs 29.1 (Org mode 9.6.6)