1 Go mod

Go 官方工具链近来的版本均支持一个称为 Go 模块(Go modules)的特性,用来管理项目依赖。此特性在版本 1.11 中被试验性地引入并从版本 1.16 开始被默认支持。

2 GOPATH

GOPATH 环境变量的默认值为当前用户的 HOME 目录下的名为 go 文件夹对应的目录路径。

  • GOPATH 文件夹中的 pkg 子文件夹用来缓存被本地项目所依赖的 Go 模块(一个 Go 模块为若干 Go 库包的集合)的版本。
  • GOBIN 环境变量用来指定 go install 子命令产生的 Go 应用程序二进制可执行文件应该存储在何处。它的默认值为 GOPATH 文件夹中的 bin 子目录所对应的目录路径。 GOBIN 路径需配置在 PATH 环境变量中,以便从任意目录运行这些 Go 应用程序。

3 go 命令

go rungo buildgo install 将只会输出代码语法错误。它们不会输出可能的代码逻辑错误(即警告)。 go vet 子命令可以用来检查可能的代码逻辑错误(即警告)。

我们可以(并且应该常常)使用 go fmt 子命令来用同一种代码风格格式化 Go 代码。

我们可以使用 go test 子命令来运行单元和基准测试用例。

我们可以使用 go doc 子命令来(在终端中)查看 Go 代码库包的文档。

强烈推荐让你的 Go 项目支持 Go 模块特性来简化依赖管理。对一个支持 Go 模块特性的项目:

  • go mod init example.com/myproject 命令可以用来在当前目录中生成一个 go.mod 文件。当前目录将被视为一个名为 example.com/myproject 的模块(即当前项目)的根目录。此 go.mod 文件将被用来记录当前项目需要的依赖模块和版本信息。我们可以手动编辑或者使用 go 子命令来修改此文件。
  • go mod tidy 命令用来通过扫描当前项目中的所有代码来添加未被记录的依赖至 go.mod 文件或从 go.mod 文件中删除不再被使用的依赖。
  • go get 命令用拉添加、升级、降级或者删除单个依赖。此命令不如 go mod tidy 命令常用。

从 Go 官方工具链 1.16 版本开始,我们可以运行 go install example.com/program@latest 来安装一个第三方 Go 程序的最新版本(至 GOBIN 目录)。在 Go 官方工具链 1.16 版本之前,对应的命令是 go get -u example.com/program(现在已经被废弃而不再推荐被使用了)。

4 其他

名称以 _. 开头的源代码文件将被 Go 官方工具链工具忽略掉。