1.1 开发环境搭建指南
下文同时覆盖 Windows 与 macOS。截图以早年 Windows 界面为主,请按你所用系统阅读对应小节;安装 VS Code 扩展、使用 go run / go env -w 等在两种系统上步骤相同。
本文结构: ① 安装 Go → ② VS Code 与首个程序 → ③ 环境变量 → ④ 常用 go 子命令速览。若按顺序学习,可在读完 §3 后再回到 §2 安装扩展并运行示例(文中亦有链接提示)。
1. 下载并安装 Go
下载页(可切换不同系统安装包):https://golang.google.cn/dl/

Windows
下载完成后,直接双击 .msi 安装包,按向导安装即可。文中示例曾安装在 E 盘 Program Files 下,你也可以使用默认路径。

一路点击 Next,直到安装完成。

macOS
- 在同一下载页选择 macOS 对应的 .pkg,双击按向导安装。官方包默认将工具链放在
/usr/local/go,并通常会帮你把/usr/local/go/bin加入 PATH(以安装程序说明为准)。 - 更省事的方式是用 Homebrew:在终端执行
brew install go。Apple Silicon 上 Homebrew 默认在/opt/homebrew,安装后一般可直接在终端里使用go。 - 打开「终端」,执行
go version。若提示找不到go,而你用的是官方 .pkg 且怀疑 PATH 未生效,可在 shell 配置末尾追加(多数 macOS 默认 zsh,常用~/.zprofile或~/.zshrc):
export PATH=$PATH:/usr/local/go/bin保存后执行 source ~/.zprofile(或你编辑的文件),重开终端再试 go version。使用 bash 时可改为编辑 ~/.bash_profile。
- 用 Homebrew 安装时,可用
which go查看路径,通常不必再手动设置 GOROOT。
2. 配置 VS Code 与首个程序
下载 VS Code
先安装与你系统匹配的 VS Code 版本。
官网下载地址:https://code.visualstudio.com/Download
Windows
若从官网下载 Windows 安装包很慢,可把链接里的下载域名换成国内 CDN(下例仅供格式参考,版本号、文件名请与你在官网复制的链接保持一致)。
原始链接往往类似:
https://az764295.vo.msecnd.net/stable/c185983a683d14c396952dd432459097bc7f757f/VSCodeUserSetup-x64-1.55.0.exe将域名 az764295.vo.msecnd.net 换成 vscode.cdn.azure.cn 后再下载,例如:
https://vscode.cdn.azure.cn/stable/c185983a683d14c396952dd432459097bc7f757f/VSCodeUserSetup-x64-1.55.0.exe再把这个链接贴到下载工具里,速度通常会好很多。
macOS
在下载页选择 macOS(注意区分 Apple Silicon 与 Intel,或选 Universal)。若官网速度慢,可使用代理,或用 Homebrew 安装:brew install --cask visual-studio-code(需已安装 Homebrew)。
环境变量(GOROOT、GOPATH、代理等)集中在下文 3. 配置环境变量 中说明;建议先完成该节,再回到这里安装扩展并运行示例。
安装 Go 扩展
Go Extension
在扩展市场搜索 Go,安装由 Go 团队维护的官方扩展即可(下图仅为示意,界面可能随 VS Code 版本略有变化)。它提供格式化、跳转、调试与语言服务(gopls)等基础能力。


装好扩展后,打开或新建 .go 文件时,右下角往往会提示安装 gopls、dlv 等工具,按提示选择安装即可;若下载失败,请先完成下文 GOPROXY 配置后再重试。一般不必再手动 git clone Go 的 tools 仓库。
运行 Hello World
环境变量与扩展就绪后,建议先用命令行跑通第一个程序,再按需使用编辑器里的一键运行(见下文技巧)。
- 新建一个文件夹(例如
hello),在 VS Code 中用「文件 → 打开文件夹」打开它。 - 在其中新建
main.go,写入:
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello, Golang")
}- 在 VS Code 中打开终端(菜单「终端 → 新建终端」,或你习惯的终端快捷键),确认当前工作目录是该文件夹(若不是,先
cd进去)。 - 执行:
go run main.go终端应输出 Hello, Golang。若已开启 Go modules(GO111MODULE=on)且目录下还没有 go.mod,可先在同一目录执行 go mod init hello(包名可自定),再执行上面的 go run。
技巧:用 Code Runner 一键运行
日常在编辑器里想「点一下就跑」,可以安装扩展 Code Runner(扩展市场里搜索安装即可,一般无需重启即可用)。
若不用扩展,通常要走 VS Code 自带的运行/调试入口:例如点击 create a launch.json file 生成配置,再在侧栏点运行——路径较长,且调试场景下往往会提示安装 dlv。

点击 create a launch.json file 就会在项目根目录下创建一个 json 文件,创建完成后,运行的边栏就变成如下模样,再点击那个三角运行按钮,就可以运行它了。

使用这种方法,需要安装一个 dlv,VS Code 会提示你安装它。安装完成后,在 Windows 下 GOPATH\bin 里常见 dlv.exe;在 macOS / Linux 下一般为无后缀的可执行文件 dlv(路径同样多在 GOPATH/bin 或 ~/go/bin)。

这种运行方法虽然可行,但操作路径偏长。安装 Code Runner 后,可以更直观地一键运行,例如编辑器右上角的运行按钮:

或通过快捷键、右键菜单运行当前文件:


装好 Code Runner 后,对 main.go 使用快捷键运行(Windows:Ctrl + Alt + N;macOS:一般为 Control + Option + N,若被系统或其它扩展占用,可在 VS Code「键盘快捷方式」里搜索 Run Code 查看或修改),或右键选择 Run Code,效果与在终端执行 go run main.go 类似,输出会出现在「输出」面板中。

项目目录解析(GOPATH 工作区)
使用 Go modules(GO111MODULE=on,推荐)时,项目可以放在任意目录,只要根目录有 go.mod,不强制再把源码放进 GOPATH/src。
若仍使用传统的 GOPATH 工作区(或希望理解历史布局),一个常见目录约定是:
bin:由go install等生成的可执行文件。pkg:编译产生的包归档等,供构建复用。src:源码,按「域名/作者/仓库」等路径组织包。
后文若提到「工作目录」,在模块模式下多指「含有 go.mod 的项目根目录」;在纯 GOPATH 模式下则多指 GOPATH 下的上述树形结构。
3. 配置环境变量
为什么要配置环境变量?
终端里执行 go version、go run,以及 VS Code 里补全、格式化、go get 拉依赖,背后都会读 Go 和系统约定好的变量。大致分工是:
- PATH(以及 GOROOT):让系统能找到
go可执行文件,并让工具链知道标准库、编译器装在哪里;没配好时,常见现象是提示「找不到 go 命令」或工具链异常。 - GOPATH / 模块相关:决定默认工作区、依赖缓存、
go install生成文件的落点;和 GO111MODULE 一起影响「按老 GOPATH 布局」还是「按 go.mod 管理项目」。 - GOPROXY 等:控制从哪个地址下载公共模块;在国内直连官方源往往很慢或失败,不配代理时
go get、编辑器一键安装 gopls 等工具容易卡住。
安装包有时不会帮你把每一项都设到最合适的状态,所以需要按下面顺序自查、补齐,最后用 go env 核对,命令行与编辑器行为才能一致。
下面按常用顺序说明:PATH / GOROOT、GOPATH、模块与代理(GOPROXY、GO111MODULE),最后用 go env 做核对。macOS / Linux 上多数配置同样用 go env -w 完成;与 PATH 相关的部分在终端配置文件里修改(见下)。
设置环境变量:GOROOT 与 PATH
安装好 Go 后,要让 shell 或「终端」能找到 go 可执行文件:安装目录即 GOROOT,标准做法是把其下的 bin 目录加入 PATH。GOROOT 表示编译器、工具、标准库的安装根路径;PATH 未包含 .../go/bin 时,执行 go get、go install 会报找不到命令。
Windows
图形界面操作如下(截图步骤为 Windows)。
右键「此电脑 / 我的电脑」→「属性」

再点击「高级系统设置」

在弹出窗口中点击「环境变量」

在「系统变量」里选中 Path →「编辑」

新建一条,填入 Go 安装目录下的 bin(即 go.exe 所在目录)

打开 cmd 或 PowerShell 执行 go version;能输出版本即生效。若仍失败,可尝试注销/重启后再试。
macOS
- 官方 .pkg 安装时,一般
GOROOT为/usr/local/go,可执行文件在/usr/local/go/bin。先在终端执行go version。 - 若无效,检查 PATH 是否包含上述
bin:echo $PATH。 - 若需手动追加(zsh),在终端执行:
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.zprofile
source ~/.zprofile然后重开终端,再执行 go version。
- 使用 Homebrew 安装的
go,通常已通过 Homebrew 的bin加入 PATH,用which go、go env GOROOT核对即可,一般不必再单独设 GOROOT。
设置环境变量:GOPATH
设置好 go 命令后,还要关心 GOPATH:默认工作区、依赖缓存、go install 安装的二进制等会与之相关。
Windows
可以在「系统环境变量」里为 GOPATH 指定一个目录(名称自定)。

不过不推荐只依赖系统里写死的单个 GOPATH;更常见的做法是用 go env -w 写入用户级配置(路径按你的磁盘习惯修改):
go env -w GOPATH=E:\VMP-Code\GolangmacOS
一般不需要在「系统设置」里新建 GOPATH,直接用 go env -w 指到用户目录下即可,例如:
go env -w GOPATH=$HOME/go也可写成具体路径,如 go env -w GOPATH=/Users/你的用户名/Projects/go。
若 Windows 系统环境变量或 macOS launchd / 旧式环境里已经设置了 GOPATH,可能与 go env -w 冲突:需要先移除或统一来源,否则会出现类似警告:
warning: go env -w GOPATH=... does not override conflicting OS environment variable移除后若仍报错,可尝试重新打开终端;Windows 上有时需注销或重启后再执行 go env -w。
设置环境变量:GOPROXY
由于网络原因,直接拉取公共模块可能失败,可借助国内镜像代理。常用地址:https://goproxy.cn
go env -w GOPROXY=https://goproxy.cn,direct在 VS Code 里按提示安装 gopls 等 Go 工具时若下载失败,也可再执行上述命令后重试。
用 go env 查看与继续微调
在终端执行 go env 会列出当前生效的 Go 相关变量。Windows 的 cmd 下常见 set KEY=value;PowerShell 或较新版本也可能显示为 KEY=value。macOS / Linux 下多为 KEY="value",含义与查单个变量时一致。
Windows(cmd)示例:
> go env
set GO111MODULE=
set GOARCH=amd64
set GOPATH=E:\MING-Code\GoPlayer
set GOPROXY=https://goproxy.cn,direct
set GOROOT=D:\Program Files (x86)\Go-1.13.6
set GOOS=windows
...macOS(终端)示例:
$ go env
GO111MODULE=""
GOARCH="arm64"
GOPATH="/Users/you/go"
GOPROXY="https://goproxy.cn,direct"
GOROOT="/usr/local/go"
GOOS="darwin"
...查看单个变量时,在 go env 后加变量名即可,例如:
go env GOPATH
go env GOROOT
go env GOPROXY变量很多,日常开发在已配置好 PATH、GOPATH、GOPROXY 的基础上,建议再确认 Go modules 已开启:
$ go env -w GO111MODULE=onGOPROXY 若尚未设置,可执行(与上文「设置环境变量:GOPROXY」相同,无需重复):
$ go env -w GOPROXY=https://goproxy.cn,direct4. 常用 go 子命令速览
环境就绪后,日常开发大多通过终端里的 go 命令完成。下表是常用子命令的极简说明;完整列表见 go help,某一子命令的说明见 go help <子命令>(如 go help build)。
| 子命令 | 说明 |
|---|---|
go version | 查看当前 Go 版本及平台信息。 |
go env | 查看或写入环境变量(如 go env GOPROXY、go env -w GO111MODULE=on)。 |
go run | 编译并直接运行指定文件或当前包,不产生常驻可执行文件(适合练习、脚本)。 |
go build | 编译当前包;package main 时会在当前目录生成可执行文件(名称一般与目录名一致,Windows 常带 .exe)。 |
go install | 编译并安装到 $GOPATH/bin(或 GOBIN),便于在任意目录直接敲命令名运行。 |
go get | 为当前模块拉取或升级依赖(Go modules 下常用;具体行为与 GO111MODULE 有关)。 |
go mod init | 在当前目录初始化 go.mod(新建模块时用)。 |
go mod tidy | 根据源码整理 go.mod / go.sum(删掉未用依赖、补上缺的)。 |
go test | 运行当前包下的测试(*_test.go)。 |
go fmt | 按官方风格格式化当前包下的 .go 源码。 |
go vet | 对当前包做静态检查,发现常见错误用法。 |
go doc | 查看标准库或已安装包的文档(如 go doc fmt.Println)。 |
go clean | 清理本包编译产生的缓存/产物(如 go clean -cache 清理构建缓存)。 |
示例(可复制到终端试跑)
在已配置好 PATH、且某个目录里已有 main.go 的前提下:
# 版本与环境
go version
go env GOPATH
# 运行当前目录单文件
go run main.go
# 编译出可执行文件(Windows 下多为 .exe,macOS/Linux 常无后缀)
go build -o hello .
./hello # macOS / Linux
# hello.exe # Windows cmd / PowerShell 当前目录下执行
# 初始化模块(目录里没有 go.mod 时)
go mod init example.com/demo
go mod tidy
# 为当前模块拉取一个依赖(将路径换成你实际需要的模块)
go get rsc.io/quote@latest
# 测试、格式、检查
go test ./...
go fmt ./...
go vet ./...
# 看某个 API 的文档
go doc fmt.Println更多子命令(如 go generate、go work 等)可在需要时查阅 官方文档 或执行 go help。