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 run
、go build
和 go 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 官方工具链工具忽略掉。