Go官方工具链
目前,Go官方工具链中提供的工具是使用得最广泛的Go开发工具。 《Go语言101》所有中所有的实例代码都使用Go官方工具链中提供的标准编译器编译验证过。
本文将介绍如何配置Go开发环境和如何使用Go官方工具链中提供的go
命令。 一些非官方工具链中的工具也将简单提及。
请从或者国内官网下载Go官方工具链, 并按照下载页面中的说明安装Go官方工具链。
Go官方工具链的版本和其所支持的最高Go语言版本是一致的。 比如,Go官方工具链1.20.x版本支持从1.0到1.20的所有Go语言版本。
为了从任意目录运行Go官方工具链中工具命令(通过go
命令), Go官方工具链安装目录下的bin
子目录路径必须配置在PATH
环境变量中。 当使用安装程序安装Go官方工具链时,安装程序很可能已经自动地将此配置好了。
Go官方工具链近来的版本均支持一个称为Go模块(Go modules)的特性,用来管理项目依赖。 此特性在版本1.11中被试验性地引入并从版本1.16开始被默认支持。
我们应该了解一个环境变量:GOPATH
。 此环境变量的默认值为当前用户的HOME目录下的名为go
文件夹对应的目录路径。 GOPATH
环境变量可以被手动地配置多个路径。 以后,当GOPATH
文件夹被提及的时候,它表示GOPATH
环境变量中的第一个路径对应的文件夹。
GOPATH
文件夹中的pkg
子文件夹用来缓存被本地项目所依赖的Go模块(一个Go模块为若干Go库包的集合)的版本。GOBIN
环境变量用来指定go install
子命令产生的Go应用程序二进制可执行文件应该存储在何处。 它的默认值为GOPATH
文件夹中的bin
子目录所对应的目录路径。GOBIN
路径需配置在PATH
环境变量中,以便从任意目录运行这些Go应用程序。
让我们写一个简单的Go程序,并且学习如何运行之。
在此程序中,单词package
和func
是两个关键字。 两个main
是两个标识符。 标识符和关键字将在后续的一篇文章中讲解。
此程序的第一行指定了当前源代码文件所处的包的包名(此处为)。 第二行是一个空行,用来增强可读性。 第三和第四行声明了一个名为main
的函数。 此函数为程序的入口函数。
Go官方工具链工具要求所有的Go源代码文件必须以.go
后缀结尾。 这里,我们假设上面展示的最简单的Go程序存放在一个名叫simplest-go-program.go
的文件中。
打开一个终端(控制台)并进入上述源文件所在的目录,然后运行
什么也没输出?是的,此程序不做什么有实质意义的事儿。
如果代码中有语法错误,这些错误将输出在终端中。
如果一个程序的main
包中有若干Go源代码文件,我们也可以使用下面的命令运行此程序。
注意:
- 支持Go模块特性的Go项目的根目录下需要一个
go.mod
文件。此文件可以使用go mod init
子命令来生成(见下)。 - 名称以
_
和.
开头的源代码文件将被Go官方工具链工具忽略掉。
上面提到的三个go
子命令(go run
、go build
和go install
) 将只会输出代码语法错误。它们不会输出可能的代码逻辑错误(即警告)。 go vet
子命令可以用来检查可能的代码逻辑错误(即警告)。
我们可以使用go test
子命令来运行单元和基准测试用例。
我们可以使用子命令来(在终端中)查看Go代码库包的文档。
强烈推荐让你的Go项目支持Go模块特性来简化依赖管理。对一个支持Go模块特性的项目:
go mod init example.com/myproject
命令可以用来在当前目录中生成一个go.mod
文件。 当前目录将被视为一个名为example.com/myproject
的模块(即当前项目)的根目录。 此go.mod
文件将被用来记录当前项目需要的依赖模块和版本信息。 我们可以手动编辑或者使用go
子命令来修改此文件。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
(现在已经被废弃而不再推荐被使用了)。
我们可以运行go help aSubCommand
来查看一个子命令aSubCommand
的帮助信息。
运行不带参数的go
命令将会列出所有支持的go
子命令。
《Go语言101》系列文章将不再对各种go
子命令做更多的解释。 请阅读官方文档 ()以获取更多信息。
我们可以使用Go项目文档和代码阅读工具(go101.org/golds
,由本书作者老貘开发)来阅读代码库文档。 此工具将列出类型的实现关系,并且支持良好的代码阅读体验。 安装Golds完成之后,我们可以运行golds std ./...
来阅读Go标准库和当前文件夹下的所有库包的文档。
我们可以在国内官网或者阅读Go官方文档。
(请搜索关注微信公众号“Go 101”或者访问github.com/golang101/golang101获取本书最新版)