go的安装
# 3. Go语言环境安装
# 3.1 选择go版本
Go 语言的版本发布策略:
- Go 团队已经将版本发布节奏稳定在每年发布两次大版本上,一般是在二月份和八月份发布。
- Go 团队承诺对最新的两个 Go 稳定大版本提供支持,比如目前最新的大版本是 Go 1.17,那么 Go 团队就会为 Go 1.17 和 Go 1.16 版本提供支持。如果 Go 1.18 版本发布,那支持的版本将变成 Go 1.18 和 Go 1.17。
- 支持的范围主要包括修复版本中存在的重大问题、文档变更以及安全问题更新等。
三种go版本选择策略
- 我们推荐的是使用 Go 最新的版本,这样你可以体验到 Go 的最新语言特性,应用到标准库的最新 API 以及 Go 工具链的最新功能,并且很多老版本中的 bug 在最新版本中都会得到及时修复;
- 如果你还是对最新版本的稳定性有一丝担忧,你也可以选择使用次新版;
- 最后,如果你要考虑现存生产项目或开源项目,那你按照需要选择,与项目策略保持一致就好了。
# 3.2 安装go
# 3.2.1 在 Linux 上安装 Go
1.下载
wget -c https://golang.google.cn/dl/go1.16.5.linux-amd64.tar.gz
**提醒:**虽然 Go 官方下载站点是 golang.org/dl,但我们可以用针对中国大陆的镜像站点 golang.google.cn/dl 来下载,在中国大陆地区使用大陆镜像站点可以大幅缩短下载时间。
2.解压
tar -C /usr/local -xzf go1.16.5.linux-amd64.tar.gz
执行完上面解压缩命令后,将在 /usr/local 下面看到名为 go 的目录,这个目录就是 Go 的安装目录,也是 Go 官方推荐的 Go 安装目录。
我们执行下面命令可以查看该安装目录下的组成:
$ls -F /usr/local/go
AUTHORS CONTRIBUTORS PATENTS SECURITY.md api/ doc/ lib/ pkg/ src/
CONTRIBUTING.md LICENSE README.md VERSION bin/ favicon.ico misc/ robots.txt test/
2
3
3.设置环境变量
为了可以在任意路径下使用 go 命令,需要将 Go 二进制文件所在路径加入到用户环境变量 PATH 中(以用户使用 bash 为例),具体操作是将下面这行环境变量设置语句添加到 $HOME/.profile 文件的末尾:
export PATH=$PATH:/usr/local/go/bin
然后执行下面命令使上述环境变量的设置立即生效:
source ~/.profile
4.验证
go version
如果这个命令输出了“go version go1.16.5 linux/amd64”,那么说明这次的 Go 安装是成功的。
# 3.2.2 在 Mac 上安装 Go
在 Mac 上我们可以在图形界面的引导下进行 Go 的安装。不过,我们先要下载适用于 Mac 的 Go 安装包:
wget -c https://golang.google.cn/dl/go1.16.5.darwin-amd64.pkg
安装包下载完毕后,我们可以双击安装包,打开标准的 Mac 软件安装界面,如下图所示:
按软件安装向导提示,一路点击“继续”,我们便可以完成 Go 在 Mac 上的安装。
和 Linux 一样,Mac 上的 Go 安装包默认也会将 Go 安装到 /usr/local/go 路径下面。因此,如果要在任意路径下使用 Go,我们也需将这个路径加入到用户的环境变量 PATH 中。具体操作方法与上面 Linux 中的步骤一样,也是将下面环境变量设置语句加入到 $HOME/.profile 中,然后执行 source 命令让它生效就可以了:
export PATH=$PATH:/usr/local/go/bin
最后,我们同样可以通过 go version 命令验证一下这次安装是否成功。
当然了,在 Mac 上,也可以采用像 Linux 那样的通过命令行安装 Go 的方法,如果采用这种方法,就要下载下面的 Mac Go 安装包:wget -c https://golang.google.cn/dl/go1.16.5.darwin-amd64.tar.gz,后续的步骤与 Linux 上安装 Go 几乎没有差别。
# 3.2.3 在 Windows 上安装 Go
在 Windows 上,我们最好的安装方式就是采用图形界面引导下的 Go 安装方法。
我们打开Go 包的下载页面 (opens new window),在页面上找到 Go 1.16.5 版本的 Windows msi 安装包(AMD64 架构下的):go1.16.5.windows-amd64.msi,通过浏览器自带的下载工具它下载到本地任意目录下。
双击打开已下载的 go1.16.5.windows-amd64.msi 文件,我们就能看到下面这个安装引导界面:
和所有使用图形界面方式安装的 Windows 应用程序一样,我们只需一路点击“继续(next)”就可完成 Go 程序的安装了,安装程序默认会把 Go 安装在 C:\Program Files\Go 下面,当然你也可以自己定制你的安装目录。
除了会将 Go 安装到你的系统中之外,Go 安装程序还会自动为你设置好 Go 使用所需的环境变量,包括在用户环境变量中增加 GOPATH,它的值默认为 C:\Users[用户名]\go,在系统变量中也会为 Path 变量增加一个值:C:\Program Files\Go\bin,这样我们就可以在任意路径下使用 Go 了。
# 安装完成后,我们可以打开Windows的“命令提示符”窗口(也就是CMD命令)来验证一下Go有没有安装成功。在命令行中输入go version,如果看到下面这个输出结果,那证明你这次安装就成功了:
C:\Users\tonybai>go version
go version go1.16.5 windows/amd64
2
3
# 3.2.4 安装多个 Go 版本
随着 Go 编程的深入,通常会有使用多个 Go 版本的需求,比如一个版本用于学习或本地开发,另外一个版本用于生产构建等等。
安装多个 Go 版本其实也很简单,这里介绍三种方法。
# 方法一:重新设置 PATH 环境变量
你只需要将不同版本的 Go 安装在不同路径下,然后将它们的 Go 二进制文件的所在路径加入到 PATH 环境变量中就可以了。
我们以 Linux 环境为例,在前面介绍 Go 标准安装方法的时候,我们已经将 Go 1.16.5 版本安装到了 /usr/local/go 下面,也将 /usr/local/go/bin 这个路径加入到了 PATH 路径下了,当前状态我们在任意路径下敲入 go,执行的都是 Go 1.16.5 版本对应的 Go 二进制文件。那这个时候,如果我们想再安装一个 Go 1.15.13 版本要怎么办呢?
首先,你需要按照标准步骤将 Go 1.15.13 安装到事先建好的 /usr/local/go1.15.13 路径下:
$mkdir /usr/local/go1.15.13
$wget -c https://golang.google.cn/dl/go1.15.13.linux-amd64.tar.gz
$tar -C /usr/local/go1.15.13 -xzf go1.15.13.linux-amd64.tar.gz
2
3
接下来,我们来设置 PATH 环境变量,将原先 $HOME/.profile 中的 PATH 变量的值由:
export PATH=$PATH:/usr/local/go/bin
改为:
export PATH=$PATH:/usr/local/go1.15.13/go/bin
这样通过执行 source 命令重新使 PATH 环境变量生效后,我们再执行 go version 命令,会得到下面这样的结果:
$go version
go version go1.15.13 linux/amd64
2
这样,我们已经安装好两个 Go 版本了。这之后,我们如果要在 Go 1.16.5 和 Go 1.15.13 两个版本之间切换,只需要重新设置 PATH 环境变量并生效即可。
# 方法二:go get 命令
这种方法有一个前提,那就是当前系统中已经通过标准方法安装过某个版本的 Go 了。
我们还以 Linux 环境为例,假设目前环境中已经存在了采用标准方法安装的 Go 1.16.5 版本,我们接下来想再安装一个 Go 1.15.13 版本。按照 Go 官方方法,我们可以这样来做:
首先,将 $ HOME/go/bin 加入到 PATH 环境变量中并生效,即便这个目录当前不存在也没关系:
export PATH=$PATH:/usr/local/go/bin:~/go/bin
然后,我们要执行下面这个命令安装 Go 1.15.13 版本的下载器:
$go get golang.org/dl/go1.15.13
这个命令会将名为 Go 1.15.13 的可执行文件安装到 $HOME/go/bin 这个目录下,它是 Go 1.15.13 版本的专用下载器,下面我们再来执行 Go 1.15.13 的下载安装命令:
$go1.15.13 download
Downloaded 0.0% ( 16384 / 121120420 bytes) ...
Downloaded 1.8% ( 2129904 / 121120420 bytes) ...
Downloaded 84.9% (102792432 / 121120420 bytes) ...
Downloaded 100.0% (121120420 / 121120420 bytes)
Unpacking /root/sdk/go1.15.13/go1.15.13.linux-amd64.tar.gz ...
Success. You may now run 'go1.15.13'
2
3
4
5
6
7
8
现在,我们看到这个命令下载了 go1.15.13.linux-amd64.tar.gz 安装包,也将它安装到 $HOME/sdk/go1.15.13 下面了。
下载安装结束后,我们就可以利用带有版本号的 go 命令来使用特定版本的 Go 了:
$go1.15.13 version
go version go1.15.13 linux/amd64
2
同样的,我们也可以通过下面这个命令查看特定 Go 版本的安装位置:
$go1.15.13 env GOROOT
/root/sdk/go1.15.13
2
# 方法三:go get 命令安装非稳定版本
其实,除了 Go 团队正式发布的稳定版本 (stable version),像前面安装的 Go 1.16.5 或 Go 1.15.13,我们还可以通过 go get 的方法安装 Go 团队正在开发的非稳定版本 (Unstable Version),包括每个稳定版发布前的 beta 版本或当前最新的 tip 版本,这些非稳定版本可以让 Go 开发人员提前体验到即将加入到稳定版本中的新特性。
但是,通过 go get 安装不同 Go 版本的方法在中国大陆地区会因网络问题而失败。如果你已经克服了网络问题,那安装非稳定版本的步骤其实和上面的步骤一样。
现在,我们以 Go 1.17beta1 和 Go Tip 版本为例,带你体验一下它们的安装步骤和验证方法。首先我们来看 Go 1.17beta1:
$go get golang.org/dl/go1.17beta1
$go1.17beta1 download
Downloaded 0.0% ( 3272 / 134470397 bytes) ...
Downloaded 21.4% ( 28819248 / 134470397 bytes) ...
Downloaded 58.1% ( 78069168 / 134470397 bytes) ...
Downloaded 100.0% (134470397 / 134470397 bytes)
Unpacking /root/sdk/go1.17beta1/go1.17beta1.linux-amd64.tar.gz ...
Success. You may now run 'go1.17beta1'
$go1.17beta1 version
go version go1.17beta1 linux/amd64
2
3
4
5
6
7
8
9
10
接着来看 Go Tip 版本:
$go get golang.org/dl/gotip
$gotip download
2
go get 为我们安装 tip 版本提供了极大方便,要知道在以前,如果我们要安装 tip 版本,需要手工下载 Go 源码并自行编译。但你要注意的是:不是每次 gotip 安装都会成功,因为这毕竟是正在积极开发的版本,一次代码的提交就可能会导致 gotip 版本构建失败!
# 3.3 配置go
其实 Go 在安装后是开箱即用的,这也意味着我们在使用 Go 之前无需做任何配置。
但为了更好地了解和学习 Go,我们还是要认识一些 Go 自带的常用配置项。
Go 的配置项是以环境变量的形式存在的,我们可以通过下面这个命令查看 Go 的这些配置项:
$go env
常用配置项:
对于中国地区的 Go 开发者而言,在真正使用 Go 构建应用之前,唯一要做的就是配置 GOPROXY 这个 Go 环境变量。由于国内的网络环境,我们可以通过配置GOPROXY避免DNS污染导致的模块拉取缓慢或失败的问题,加速你的构建。
windows cmd下:
go env -w GOPROXY=https://goproxy.cn,direct