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 语言步骤如下:
- 访问官方下载页面,选择适用于 Windows 版本安装包(Installer),下载
.msi
格式安装文件,大小约 60 MB。 - 运行安装文件,按提示安装。建议自定义安装路径,并在路径中包含版本号,例如:
D:\Software\Go1.21.6
。安装所需磁盘空间约 230 MB。 - 完成安装后,在命令提示符中输入
go version
来检查 Go 版本,确认安装成功。
Linux 平台安装
在 Ubuntu 22.04.2 LTS 上安装 Go 语言步骤如下:
- 使用
wget
命令下载适合 Linux 版本压缩包:wget https://go.dev/dl/go1.21.6.linux-amd64.tar.gz
。 - 解压缩文件:
tar -xvf go1.21.6.linux-amd64.tar.gz
。 - 将变量声明手动加入到
$HOME/.profile
文件中。
另外,也可以通过系统包管理器安装 Go,例如使用 apt install golang-go
命令一键安装,只是可选安装版本有限。
升级版本
升级 Go 语言版本很简单,首先下载好新版本安装包:
- Win 平台:直接运行安装包,会提示当前已经安装过 Go 语言。可以选择继续来自动安装新版本,也可以选择退出中断安装。
- Linux 平台:将安装包解压后,更新环境变量
GOROOT
和GOPATH
的设置值,指向新版本所在路径。
完全卸载
根据不同安装方式,卸载方法不同:
- 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
。环境变量GOARCH
和GOOS
一般配合使用,指定编译目标对应的操作系统版本,实现交叉编译。 - 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.com
或192.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 开发环境配置步骤如下:
- 打开扩展市场,搜索并安装 Go 语言支持插件。
- 安装
Code Runner
扩展以增加一键运行代码功能。 - 使用快捷键「Ctrl+Shift+P」打开命令面板,输入
Go: Install/Update Tools
,选择并安装必要工具,如gopls
(语言服务器)、gofmt
(格式化工具)、delve
(调试工具)等。 - 打开 Go 项目文件,VSCode 会提示安装其他缺失插件。
插件安装完成后,使用快捷键「Alt+Shift+F」格式化代码,使用快捷键「Ctrl+Alt+N」执行代码。
目录说明
Go 语言安装目录中包含下面内容:
api
:按照 Go 语言版本整理,包含所有公开变量、常量、函数等 API 列表,便于进行 Go 语言 API 检索。bin
:存放标准命令行工具,现在版本中只剩go
和gofmt
。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
:包含大量测试代码源文件。