Go 语言环境安装配置

安装 Go 语言

主要介绍在 Windows 和 Linux 平台安装和设置 Go 语言开发环境。

安装版本

Go 语言在官网上提供两种下载版本:

  • Stable versions:表示稳定版本,可用于生产环境。Go 官方承诺对最新两个稳定次版本提供支持,并保持向后兼容。
  • Unstable version:版本号后缀带有 rc 字样,表示候选发布版本。包含最新功能和改进,但还在测试中,可能不如稳定版本可靠。

目前 Go 语言最新稳定版为 1.22.5:

  • 主版本号(Major Version): 自从 2012 年发布 1.0 以来,主版本号一直是 1。Go 2 还处于提案阶段。
  • 次版本号(Minor Version): 代表实际更新版本,一年发布两次,通常在 2 月和 8 月。
  • 修订版本号(Patch Version): 修订版本号在修复 bug、进行安全修补或更新其他小改进时会增加。在版本支持周期内不定期更新。

此外,每个版本下还提供适合多种平台的安装包,常用平台用加粗表示。学习和工作中,一般选择对应平台最新稳定版本安装。

Win 平台安装

在 Windows 10 上安装 Go 语言步骤如下:

  1. 访问官方下载页面,选择适用于 Windows 版本安装包(Installer),下载 .msi 格式安装文件,大小约 60 MB。
  2. 运行安装文件,按提示安装。建议自定义安装路径,并在路径中包含版本号,例如:D:\Software\Go1.21.6。安装所需磁盘空间约 230 MB。
  3. 完成安装后,在命令提示符中输入 go version 来检查 Go 版本,确认安装成功。

Linux 平台安装

在 Ubuntu 22.04.2 LTS 上安装 Go 语言步骤如下:

  1. 使用 wget 命令下载适合 Linux 版本压缩包:wget https://go.dev/dl/go1.21.6.linux-amd64.tar.gz
  2. 解压缩文件:tar -xvf go1.21.6.linux-amd64.tar.gz
  3. 将变量声明手动加入到 $HOME/.profile 文件中。

另外,也可以通过系统包管理器安装 Go,例如使用 apt install golang-go 命令一键安装,只是可选安装版本有限。

升级版本

升级 Go 语言版本很简单,首先下载好新版本安装包:

  • Win 平台:直接运行安装包,会提示当前已经安装过 Go 语言。可以选择继续来自动安装新版本,也可以选择退出中断安装。
  • Linux 平台:将安装包解压后,更新环境变量 GOROOTGOPATH 的设置值,指向新版本所在路径。

完全卸载

根据不同安装方式,卸载方法不同:

  • Win 安装版:在开始菜单找到 Go 语言卸载程序执行。或在「控制面板」-「程序和功能」中找到 Go 语言,右键选择「卸载」来完成反安装。
  • Linux 安装版:通过包管理器卸载命令来删除。例如:apt remove golang-go
  • Linux 解压版:直接删除 Go 语言所在目录,删除相关环境变量。必要时,在卸载前运行 go clean 命令清理相关缓存文件。

环境设置

Go 语言装好后可以直接使用,不过最好查看和设置一下运行环境。

环境变量

Go 语言环境变量通过 go env 命令来查询。下面是在 Win10 系统刚安装完 Go 语言后,环境变量初始值:

C:\Users\assassing>go version
go version go1.23rc2 windows/amd64

C:\Users\assassing>go env
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\assassing\AppData\Local\go-build
set GOENV=C:\Users\assassing\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\Users\assassing\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\assassing\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=C:\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLCHAIN=auto
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.23rc2
set GODEBUG=
set GOTELEMETRY=local
set GOTELEMETRYDIR=C:\Users\assassing\AppData\Roaming\go\telemetry
set GCCGO=gccgo
set GOAMD64=v1
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=0
set GOMOD=NUL
set GOWORK=
set CGO_CFLAGS=-O2 -g
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-O2 -g
set CGO_FFLAGS=-O2 -g
set CGO_LDFLAGS=-O2 -g
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -fno-caret-diagnostics -Qunused-arguments -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=C:\Users\ASSASS~1\AppData\Local\Temp\go-build4102122831=/tmp/go-build -gno-record-gcc-switches

大多数环境变量不用改动,只需要关注下面这些:

  • GOARCH:指定目标 CPU 架构类型,例如:amd64
  • GOOS:指定目标操作系统,例如:windows。环境变量 GOARCHGOOS 一般配合使用,指定编译目标对应的操作系统版本,实现交叉编译。
  • GO111MODULE:控制模块支持开关,从 Go 1.11 版本开始引入。默认为空,代表自动启用。
  • GOBIN:可执行文件存放目录,主要存放使用 go install 命令安装的工具。默认为空,等于 %USERPROFILE%\go\bin。最好设置为 %GOPATH%\bin,并加入到系统环境变量 Path 中,方便在命令行运行工具。
  • GOCACHE:Go 编译缓存目录,默认为 %LocalAppData%\go-build。如果系统盘空间吃紧或速度太慢,应该设置到另外分区中。
  • GOMODCACHE:Go 语言模块缓存目录,从 Go 1.15 版本开始引入。用于存放由 go get 命令下载的依赖模块,默认为%USERPROFILE%\go\pkg\mod。由于 Go 模块通过版本号管理,可供全局项目使用,因此这个目录和 GOBIN 目录一样,最好设置为 %GOPATH%\pkg\mod
  • GOROOT:Go 语言安装目录,包含 Go 语言源代码、编译器和相关工具。如果系统中装有多个 Go 语言版本,可以将此变量添加到用户变量,然后修改系统变量 Path 中 Go 语言执行文件路径为 %GOROOT%\bin。往后,只要修改 GOROOT 值,就能切换到不同 Go 语言版本。
  • GOPATH:早期作为用户工作目录,存放 Go 项目源代码,现在则是默认依赖包和安装包存放地。默认值为 %USERPROFILE%\go,最好修改到一个方便管理的目录。
  • GOPROXY:指定 Go 模块下载代理地址。默认是 https://proxy.golang.org,direct,在中国无法访问默认代理地址,推荐配置为七牛云代理 https://goproxy.cn,direct
  • GONOPROXY:指定不通过代理下载的 Go 模块列表,通常用于私有仓库中的项目。支持域名和 IP 地址,例如 *.example.com192.168.1.123:10019
  • GONOSUMDB:指定忽略校验的 Go 模块列表,同 GONOPROXY 一起使用,好在内部网络环境构建 Go 项目。

上面提到 Go 语言环境变量默认值时,经常见到三个系统变量:

  • %USERPROFILE%:指向当前登录用户主目录,比如 C:\Users\assassing。包含用户桌面、文档、下载、音乐等标准目录。
  • %AppData%:指向 AppData\Roaming 目录,比如 C:\Users\assassing\AppData\Roaming。规定用于存储设备间同步数据。
  • %LocalAppData%:指向 AppData\Local 目录,比如 C:\Users\assassing\AppData\Local。规定用于存储本地数据。

这三个目录被无数软件滥用,如果有选择,不要把重要数据留在里面。

设置环境变量

Go 语言安装时(以 Win 示例,Linux 类似)会修改系统环境变量,插入三条值:

  • 用户变量新增 GOPATH 变量,值为 %USERPROFILE%\go
  • 用户变量 Path,插入值 %USERPROFILE%\go\bin
  • 系统变量 Path,插入值 D:\Software\Go1.21.6\bin,为 Go 语言执行文件路径。如果运行 go 命令提示找不到文件,多半是这个值不正确。

其他使用 go env 查询到的变量并不在系统环境变量中,想要修改得在系统环境变量中添加对应键值:

  • Win 平台:常用操作是在「系统属性」-「高级」-「环境变量」中新建、编辑和删除变量,但使用 setx 命令设置用户变量更方便:

    setx GOBIN "%GOPATH%\bin"
    setx GOMODCACHE "%GOPATH%\pkg\mod"
    setx GOROOT "D:\Software\Program\go\go1.22.0"
    setx GOPATH "D:\Software\Program\go"
    setx GOPROXY "https://goproxy.cn,direct"
    setx PATH "%PATH%;%GOROOT%\bin\;%GOPATH%\bin\"

    需要注意 setx 最多支持 1024 个字符,超过会被截断。

  • Linux 平台:修改用户配置文件,将变量声明命令加入其中。例如:

    cat >> ~/.profile <<EOF
    export GOROOT=$HOME/go/go1.21.6
    export GOPATH=$HOME/go
    export PATH=\$PATH:\$GOROOT/bin:\$GOPATH/bin
    export GO111MODULE=on
    export GOPROXY=https://goproxy.cn
    EOF
    source ~/.profile

    如果把命令添加到 /etc/profile 文件中,会对系统中所有用户生效。

作为脚本运行

由于 Go 语言编译速度快,在 Linux 下可以配合 gorun 工具,把 Go 语言当作脚本语言来用。先通过 go install 命令安装模块,然后确保 $GOPATH/bin 被加入到系统变量 $PATH 中,否则会提示找不到可执行文件:

go install github.com/erning/gorun@latest
export PATH=$PATH:$(go env GOPATH)/bin

新建一个测试脚本,在首行添加 shebang

#!/usr/bin/env gorun
package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

加上可执行权限,测试运行:

chmod +x script.go
./script.go

由于 #! 在 Go 语言中无法被编译器识别,因此脚本无法普通编译,只能通过 gorun 方式运行。

配置 IDE

在主流 IDE(Integrated Development Environment,集成开发环境)中设置 Go 开发环境。

GoLand

GoLand 是 Go 语言专用代码编辑器。安装好 GoLand 后,可以按需下载惯用插件,然后设置 Go 语言运行和工作路径:

  • GOROOT 配置:在顶部设置菜单中选择「Go」-「GOROOT」,配置 Go 语言安装位置,支持配置多个版本,可随时切换。点击「+」添加新路径,选择「Download…」下载并安装特定版本 Go 语言,例如安装到 D:\Software\Program\go。若已安装 Go,选择「Local…」来指定所在目录。注意,旧版本 GoLand 可能无法识别较新版本 Go,会提示「找不到 SDK」。
  • GOPATH 配置:打开「Go」-「GOROOT」页面来设置全局和项目级工作目录。勾选「使用系统环境中定义的 GOPATH」即可,没有特殊需求不需要设置。

为使快捷键与 VSCode 保持一致,可以在设置中通过「按键映射」来自定义快捷键。

VSCode

VSCode 中 Go 开发环境配置步骤如下:

  1. 打开扩展市场,搜索并安装 Go 语言支持插件。
  2. 安装 Code Runner 扩展以增加一键运行代码功能。
  3. 使用快捷键「Ctrl+Shift+P」打开命令面板,输入 Go: Install/Update Tools,选择并安装必要工具,如 gopls(语言服务器)、gofmt(格式化工具)、delve(调试工具)等。
  4. 打开 Go 项目文件,VSCode 会提示安装其他缺失插件。

插件安装完成后,使用快捷键「Alt+Shift+F」格式化代码,使用快捷键「Ctrl+Alt+N」执行代码。

目录说明

Go 语言安装目录中包含下面内容:

  • api:按照 Go 语言版本整理,包含所有公开变量、常量、函数等 API 列表,便于进行 Go 语言 API 检索。
  • bin:存放标准命令行工具,现在版本中只剩 gogofmt
  • doc:包含 Go 语言文档。在 1.10 版本及以下,可以使用命令 godoc -http=:10000 启动本地文档服务并通过浏览器访问。自 1.13 版本起,该方法被废弃,推荐使用在线文档。在 1.16 版本后,doc 内只剩四个文档:asm.html(编译指南)、go_mem.html(内存模型)、go_spec.html(语言规范)和 go1.1x.html(更新说明,1.19 版本后不再提供)。
  • lib:官方称用于存储与编译器和工具链相关库文件,但常年只有一个 time 子目录。
  • misc:包含各种非核心杂项工具、脚本和配置文件。
  • pkg:存放编译 Go 语言标准库生成物(.a 文件)。随着 Go 模块发展,这里只剩少量头文件和内置工具。
  • src:包含 Go 语言自身源代码,每个子目录代表一个包。
  • test:包含大量测试代码源文件。