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
2
3
4
5
package main

func main() {

}

在此程序中,单词packagefunc是两个关键字。两个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 .

注意:

  • go run子命令并不推荐在正式的大项目中使用,go run子命令只是一种方便的方式来运行简单的Go程序。对于正式的项目,最好使用go build或者go install子命令构建可执行程序文件来运行Go程序。
  • 支持Go模块特性的Go项目的根目录下需要一个go.mod文件。此文件可以使用go mod init子命令来生成。
  • 名称以_.开头的源代码文件将被Go官方工具链工具忽略掉。

5. 更多go子命令

上面提到的三个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(现在已经被废弃而不再推荐使用了)。

我们可以运行go help aSubCommand 来查看一个子命令aSubCommand的帮助信息。

更多Go子命令请阅读官方文档