官方Go SDK

目前,官方Go SDK中提供的工具是使用的最广泛的Go开发工具。 《Go语言101》所有中所有的实例代码都使用标准编译器编译验证过。

本文将介绍如何配置Go开发环境和如何使用Go SDK中的go命令运行简单的Go程序。 各种go子命令也将获得简单的介绍。

安装Go SDK

请从国际官网或者国内官网下载Go SDK, 并按照下载页面中的说明安装Go SDK。

Go SDK的版本和其所支持的最高Go语言版本是一致的。 比如,Go SDK 1.13.x支持从1.0到1.13的所有Go语言版本。

为了从任意目录运行Go SDK中工具命令(主要各种go子命令), Go SDK安装目录下的bin子目录路径必须配置在PATH环境变量中。

一些老的Go SDK版本可能需要配置GOROOTGOPATH环境变量。 当前最新的Go SDK版本对这些没有做强制要求。 GOPATH环境变量的默认值为当前用户的HOME目录下的名为go文件夹对应的目录。 GOPATH环境变量中可以指定多个目录。

GOBIN环境变量用来指定某些go子命令(比如go install,见下)产生的二进制可执行文件应该存储在何处。 如果此环境变量未指定,go命令将使用GOPATH环境变量中指定的第一个路径下的bin子目录路径来存储这些可执行文件。 此目录的路径需配置在PATH环境变量中,以便从任意目录运行这些可执行文件。

在Go SDK 1.11版本之前,go命令推荐所有的Go代码都放在GOPATH环境变量中指定的任一个路径下的src子目录中,尤其是依赖于其它第三方代码库包的Go项目代码。 代码库包将在后面的代码包和包引入详述。

Go SDK 1.11引入了一个试验性的特性:Go模块(Go modules)。 此特性让我们得以自由地将我们的Go项目代码放置在任何目录下。 我们可以从此官方维基页面得到更多关于Go模块的信息。

注意,从Go SDK 1.13开始,Go模块模式将成为Go项目开发中的推荐模式。 旧的GOPATH模式将不再推荐。GOPATH环境变量的意义和必要性将大大减弱,甚至逐渐消失。 另一方面,GOBIN环境变量的重要性将提升,因为我们仍需要一个目录路径用来存储某些go子命令产生的二进制可执行文件。

最简单的Go程序

让我们写一个简单的Go程序,并且学习如何运行之。

下面的程序应该是最简单的Go程序。
package main

func main() {
}

在此程序中,单词packagefunc是两个关键字。 两个main是两个标识符。 标识符和关键字将在后续的一篇文章中讲解。

此程序的第一行指定了当前源代码文件所处的包的包名(此处为main)。 第二行是一个空行,用来增强可读性。 第三和第四行声明了一个名为main的函数。 此函数为程序的入口函数。

运行一个Go程序

Go SDK工具要求所有的Go源代码文件必须以.go后缀结尾。 这里,我们假设上面展示的最简单的Go程序存放在一个名叫simplest-go-program.go的文件中。

打开一个终端(控制台)并进入上述源文件所在的目录,然后运行
$ go run simplest-go-program.go

什么也没输出?是的,此程序不做什么有实质意义的事儿。

如果代码中有语法错误,这些错误将输出在终端中。

如果一个程序的main包中有若干Go源代码, 我们也可以使用下面的命令运行此程序。
$ go run *.go

注意:go run子命令并不推荐在正式的大项目中使用。 go run子命令只是一种方便的方式来运行简单的Go程序。 对于正式的项目,最好使用go build或者go install子命令来编译生成可执行程序文件。

更多go子命令

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

我们可以使用go fmt子命令来用同一种代码风格格式化Go代码。

我们可以使用go get子命令将一个远程Go代码库拉取到本地以便将其做为第三方Go包引入并使用其中的资源。 go get子命令需要首先安装相应的代码版本管理工具。

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

我们可以使用go doc子命令来查看Go代码库包的文档。

从Go SDK 1.11版本开始,我们可以运行go mod子命令来管理包依赖。

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

运行不带参数的go命令将会列出所有支持的go子命令。

《Go语言101》系列文章将不再对各种go子命令做更多的解释。 请阅读官方文档墙外版)以获取更多信息。

查看Go文档

我们可以在Go官网golang.org墙内版)阅读Go官方文档。

我们也可以运行godoc -http=:9999开启一个官网的一个本地镜像来阅读Go官方文档。

请注意:

另注意:当前(Go SDK 1.13),godoc命令不支持不处于GOPATH下的代码包。

godoc程序启动时默认将会为所有本地已经下载的Go第三方库包生成文档。 有时这可能需要很长的时间。如果你只想查看标准库的文档,你可以在godoc命令运行之前在终端中将GOPATH环境变量暂时设为一个不存在的路径, 比如:GOPATH=nonexist godoc -http=:9999

Go语言101项目目前同时托管在GithubGitlab上。 欢迎各位在这两个项目中通过提交bug和PR的方式来改进完善Go语言101中的各篇文章。

本书微信公众号名称为"Go 101"。每个工作日此公众号将尽量发表一篇和Go语言相关的原创短文。各位如果感兴趣,可以搜索关注一下。

赞赏