Go官方工具链
1. Go官方工具链
目前,Go官方工具链中提供的工具是使用的最广泛的Go开发工具。本文将介绍如何配置Go开发环境和如何使用Go官方工具链中提供的go
命令。一些非官方工具链中的工具也将简单提及。
2. 安装Go官方工具链
请从国际官网或者国内官网下载Go官方工具链,并按照下载页面中的说明安装Go官方工具链。
Go官方工具链的版本和其所支持的最高Go语言版本是一致的。比如,Go官方工具链1.18.x版本支持从1.0到1.18的所有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应用程序。
3. 最简单的Go程序
让我们写一个简单的Go程序,并且学习如何运行之。
下面的程序应该是最简单的Go程序。
1 | package main |
在此程序中,单词package
和func
是两个关键字。两个main
是两个标识符。标识符和关键字将在后续的一遍文章中讲解。
此程序的第一行制定了当前源代码文件所处的包的包名(此处为main
)。第二行是一个空行,用来增强可读性。第三行和第四行声明了一个名为main
的函数。此函数为程序的入口函数。
4. 运行一个Go程序
Go官方工具链工具要求所有的Go源代码文件必须以.go后缀结尾。这里,我们假设上面展示的最简单的Go程序存在一个名为simplest-go-program.go
的文件中。
打开一个终端(控制台)并进入上述文件所在的目录,然后运行
1 | go run simplest-go-program.go |
什么也没输出?是的,此程序不做什么有实质意义的事儿。
如果代码中有语法错误,这些错误将输出在终端中。
如果一个程序的main
包中有若干Go源代码文件,我们也可以使用下面的命令运行此程序。
1 | go run . |
5. 更多go
子命令
上面提到的三个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
(现在已经被废弃而不再推荐使用了)。
我们可以运行go help aSubCommand
来查看一个子命令aSubCommand
的帮助信息。
更多Go子命令请阅读官方文档