安装与环境搭建
课程导语
“工欲善其事,必先利其器。“在开始 Go 语言的编程之旅前,我们需要先搭建好开发环境。本节将手把手带你完成 Go 的安装、环境变量配置和编辑器设置。无论你使用的是 macOS、Linux 还是 Windows,都能在这里找到详细的安装指引。
下载 Go
Go 语言的官方下载地址为:https://go.dev/dl/
在下载页面上,你可以找到适用于所有主流操作系统和架构的安装包。下载前,请确认你的操作系统版本和 CPU 架构(通常是 AMD64 或 ARM64)。
建议下载最新的稳定版本(Stable Release),通常标注为 Go 1.x.x。如果你需要最新的语言特性,可以下载 Go 1.x 的最新次版本。生产环境推荐使用最新的两个稳定版本之一。
在 macOS 上安装 Go
方法一:官方安装包(推荐)
- 前往 https://go.dev/dl/ 下载 macOS 版安装包(
.pkg文件) - 双击
.pkg文件,按照安装向导操作 - 安装完成后,Go 会被安装到
/usr/local/go目录(Apple Silicon Mac 为/opt/homebrew/go或/usr/local/go)
方法二:Homebrew 安装
如果你使用 Homebrew 包管理器,可以通过以下命令安装:
# 安装 Go
brew install go
# 验证安装
go version提示
使用 Homebrew 安装的 Go 可能与官方安装包的安装路径不同。使用 brew info go 可以查看具体的安装路径。如果你之前手动安装过 Go,可能需要先卸载旧版本以避免冲突。
方法三:使用 asdf 版本管理器
如果你需要在多个 Go 版本之间切换,推荐使用 asdf:
# 安装 asdf(如果尚未安装)
brew install asdf
# 添加 Go 插件
asdf plugin add golang
# 安装指定版本的 Go
asdf install golang 1.23.0
# 设置全局默认版本
asdf global golang 1.23.0在 Linux 上安装 Go
方法一:官方压缩包(推荐)
# 1. 下载 Go 压缩包(以 Go 1.23.0 为例,AMD64 架构)
wget https://go.dev/dl/go1.23.0.linux-amd64.tar.gz
# 2. 删除可能存在的旧安装(需要 sudo 权限)
sudo rm -rf /usr/local/go
# 3. 解压到 /usr/local 目录
sudo tar -C /usr/local -xzf go1.23.0.linux-amd64.tar.gz
# 4. 将 Go 的 bin 目录添加到 PATH 环境变量
# 编辑 ~/.profile 或 ~/.bashrc,添加以下内容:
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.profile
echo 'export PATH=$PATH:$(go env GOPATH)/bin' >> ~/.profile
# 5. 使环境变量生效
source ~/.profile
# 6. 验证安装
go version注意
不要将 Go 安装在 /usr/local/go 以外的路径,否则可能导致某些工具无法正常工作。如果必须自定义安装路径,需要正确设置 GOROOT 环境变量。
方法二:包管理器安装
# Ubuntu / Debian
sudo apt update
sudo apt install golang-go
# Fedora
sudo dnf install golang
# Arch Linux
sudo pacman -S go注意
通过系统包管理器安装的 Go 版本通常不是最新的。如果你需要最新版本,推荐使用官方压缩包安装。
在 Windows 上安装 Go
方法一:官方安装包(推荐)
- 前往 https://go.dev/dl/ 下载 Windows 版安装包(
.msi文件) - 双击
.msi文件,按照安装向导操作 - 默认安装路径为
C:\Program Files\Go - 安装程序会自动将
C:\Program Files\Go\bin添加到系统 PATH 环境变量
方法二:使用 Scoop 或 Chocolatey
# 使用 Scoop
scoop install go
# 使用 Chocolatey
choco install golang方法三:WSL(Windows Subsystem for Linux)
如果你在 Windows 上开发但需要 Linux 环境,推荐使用 WSL:
# 在 WSL (Ubuntu) 中安装 Go
wget https://go.dev/dl/go1.23.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.23.0.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
go version验证安装
安装完成后,打开终端(或命令提示符 / PowerShell),输入以下命令验证:
# 查看 Go 版本
go version
# 输出示例:go version go1.23.0 darwin/arm64
# 查看 Go 环境变量
go env
# 查看 Go 安装路径(GOROOT)
go env GOROOT
# 输出示例:/usr/local/go
# 查看 GOPATH(工作区路径)
go env GOPATH
# 输出示例:/Users/yourname/go
# 查看 GOBIN
go env GOBINGOROOT 是 Go 安装目录的路径,即 Go 标准库和工具链所在的位置。通常不需要手动设置,安装程序会自动配置。
GOPATH 是 Go 的工作区目录,用于存放 Go 源代码、编译后的包和可执行文件。在 Go Modules(Go 1.11+)时代,GOPATH 的作用已被大大弱化,现在主要用于缓存下载的模块。
Go 工具链概览
Go 安装包自带了一套功能完善的工具链,以下是最常用的命令:
核心命令
| 命令 | 说明 | 示例 |
|---|---|---|
go run | 编译并直接运行 Go 程序 | go run main.go |
go build | 编译 Go 程序,生成可执行文件 | go build -o myapp |
go install | 编译并安装包或可执行文件 | go install |
go test | 运行测试 | go test ./... |
go fmt | 格式化代码 | go fmt ./... |
go vet | 静态分析,检查常见错误 | go vet ./... |
go get | 下载并安装包 | go get github.com/gin-gonic/gin |
go mod | 模块管理 | go mod init、go mod tidy |
go doc | 查看文档 | go doc fmt.Println |
go env | 查看/设置环境变量 | go env GOPATH |
go clean | 清理构建缓存 | go clean -cache |
一个完整的开发流程示例
# 1. 创建项目目录
mkdir myproject && cd myproject
# 2. 初始化模块
go mod init myproject
# 3. 编写代码(使用编辑器创建 main.go)
# 4. 运行程序
go run main.go
# 5. 运行测试
go test ./...
# 6. 构建可执行文件
go build -o myapp
# 7. 运行构建后的程序
./myapp编辑器与 IDE 配置
Visual Studio Code + Go 扩展(推荐新手使用)
VS Code 是 Go 开发中最受欢迎的编辑器之一,搭配官方 Go 扩展即可获得出色的开发体验。
安装步骤:
- 安装 VS Code
- 安装 Go 扩展(由 Go Team at Google 提供)
- 在扩展面板搜索 “Go”,安装 ID 为
golang.go的扩展
- 在扩展面板搜索 “Go”,安装 ID 为
- 安装 Go 工具:打开命令面板(
Cmd+Shift+P/Ctrl+Shift+P),输入Go: Install/Update Tools,选择全部工具并安装
推荐的 VS Code 配置:
在项目根目录创建 .vscode/settings.json:
{
"go.useLanguageServer": true,
"go.lintTool": "staticcheck",
"go.lintOnSave": "package",
"go.formatTool": "gofmt",
"go.testOnSave": true,
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
}
}GoLand(JetBrains)
GoLand 是 JetBrains 出品的 Go 专用 IDE,功能最为强大,但需要付费(有免费的教育版)。
优势:
- 开箱即用,无需额外配置
- 强大的代码导航和重构功能
- 内置调试器、数据库工具
- 优秀的 Web 框架支持
其他编辑器
| 编辑器 | 说明 |
|---|---|
| Vim/Neovim | 使用 vim-go 或 gopls LSP 插件 |
| Emacs | 使用 lsp-mode + gopls |
| Sublime Text | 使用 GoSublime 或 LSP 插件 |
建议
如果你是 Go 初学者,推荐使用 VS Code + Go 扩展。它免费、轻量,且提供了完整的开发体验。等你对 Go 有了更深入的了解后,再考虑是否需要 GoLand 等付费 IDE。
环境变量详解
Go 的行为由多个环境变量控制。以下是最重要的环境变量:
必知环境变量
| 环境变量 | 说明 | 默认值 | 是否需要手动设置 |
|---|---|---|---|
GOROOT | Go 安装目录 | 安装时自动设置 | 通常不需要 |
GOPATH | Go 工作区(缓存模块) | $HOME/go(Unix)、%USERPROFILE%\go(Windows) | 通常不需要 |
GOBIN | go install 的安装目录 | $GOPATH/bin | 可选 |
GOPROXY | 模块代理地址 | https://proxy.golang.org,direct | 中国用户建议设置 |
GO111MODULE | 模块模式开关 | auto(Go 1.16+) | 通常不需要 |
中国用户配置
由于网络原因,中国用户建议设置 Go 模块代理以加速依赖下载:
# 设置七牛云的 Go 模块代理(推荐)
go env -w GOPROXY=https://goproxy.cn,direct
# 或者使用阿里云代理
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
# 设置 GOSUMDB 为国内镜像
go env -w GOSUMDB=sum.golang.google.cn
# 确认设置
go env GOPROXY
go env GOSUMDB关于 go env -w
go env -w 命令会将环境变量写入 Go 的环境配置文件($HOME/.config/go/env),持久化保存。也可以使用 go env -u 取消设置。
Go Modules 与 GOPATH
在 Go 1.11 之前,Go 使用 GOPATH 模式来管理依赖和项目结构。从 Go 1.11 开始,Go 引入了 Go Modules,并在 Go 1.16 中成为默认模式。
GOPATH 模式(旧模式,已弃用)
在 GOPATH 模式下,所有 Go 项目都必须放在 GOPATH 目录下:
GOPATH/
├── src/ # 所有源代码
│ ├── github.com/
│ │ └── user/
│ │ └── project/
│ │ └── main.go
│ └── golang.org/
│ └── x/
│ └── tools/
├── pkg/ # 编译后的包文件
└── bin/ # 编译后的可执行文件GOPATH 模式的问题:
- 所有项目必须放在同一个目录下
- 没有版本管理概念,无法同时使用同一依赖的不同版本
- 不支持在
GOPATH外部开发
Go Modules 模式(推荐)
Go Modules 是 Go 官方的依赖管理方案,每个项目独立管理自己的依赖:
myproject/ # 项目可以在任意位置
├── go.mod # 模块定义文件
├── go.sum # 依赖校验文件
└── main.go # 源代码Go Modules 的优势:
- 项目可以放在任意目录
- 支持语义化版本管理
- 支持依赖版本锁定
- 支持依赖去重
- 完全不依赖 GOPATH
当前状态
从 Go 1.16 开始,Go Modules 已经是默认的依赖管理方式。如果你使用的是 Go 1.16 或更高版本,无需任何额外配置即可使用 Go Modules。本课程所有示例均基于 Go Modules 模式。
常见问题排查
问题 1:go: command not found
原因:Go 的 bin 目录没有添加到系统 PATH 中。
解决方法:
# 手动添加到 PATH(根据你的安装路径调整)
export PATH=$PATH:/usr/local/go/bin
export PATH=$PATH:$(go env GOPATH)/bin
# 将以上命令添加到你的 shell 配置文件中使其永久生效
# Bash 用户:~/.bashrc 或 ~/.bash_profile
# Zsh 用户:~/.zshrc问题 2:下载依赖超时
原因:网络问题,无法访问 proxy.golang.org。
解决方法:
# 设置国内代理
go env -w GOPROXY=https://goproxy.cn,direct问题 3:版本冲突
原因:系统中存在多个 Go 版本。
解决方法:
# 查看当前使用的 Go 路径
which go
# 如果有多个版本,确保 PATH 中只有一个 Go 的 bin 目录
# 或者使用版本管理工具如 asdf 管理多版本练习题
练习 1
在你的电脑上安装 Go,并使用 go version 命令验证安装是否成功。记录你安装的 Go 版本号和操作系统信息。
安装完成后,在终端中运行:
go version输出示例(因操作系统和版本不同而异):
- macOS Apple Silicon:
go version go1.23.0 darwin/arm64 - macOS Intel:
go version go1.23.0 darwin/amd64 - Linux:
go version go1.23.0 linux/amd64 - Windows:
go version go1.23.0 windows/amd64
练习 2
使用 go env 命令查看以下环境变量的值,并解释它们的含义:GOROOT、GOPATH、GOPROXY。
go env GOROOT GOPATH GOPROXY- GOROOT:Go 的安装目录,包含标准库和工具链。例如
/usr/local/go。 - GOPATH:Go 的工作区目录,用于缓存模块和存放
go install编译的可执行文件。例如/Users/yourname/go。 - GOPROXY:Go 模块代理地址,用于加速依赖下载。默认值为
https://proxy.golang.org,direct。
练习 3
如果你在中国大陆使用 Go 开发,应该如何配置环境变量以加速依赖下载?请写出具体的命令。
# 设置国内模块代理(七牛云)
go env -w GOPROXY=https://goproxy.cn,direct
# 设置校验和数据库为国内镜像
go env -w GOSUMDB=sum.golang.google.cn
# 验证设置
go env GOPROXY
go env GOSUMDB练习 4
简述 Go Modules 模式与 GOPATH 模式的主要区别,并说明为什么推荐使用 Go Modules。
| 特性 | GOPATH 模式 | Go Modules 模式 |
|---|---|---|
| 项目位置 | 必须在 GOPATH/src 下 | 可以在任意位置 |
| 版本管理 | 不支持 | 支持语义化版本 |
| 依赖锁定 | 无 | go.sum 文件锁定 |
| 可移植性 | 差 | 好(自包含依赖信息) |
推荐 Go Modules 的原因:Go Modules 解决了 GOPATH 模式的根本缺陷——缺乏版本管理。它让每个项目独立管理自己的依赖,支持精确的版本控制,并且项目可以放在任意目录,大大改善了开发体验。
