Skip to content

1.1 开发环境搭建指南

下文同时覆盖 WindowsmacOS。截图以早年 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

  1. 在同一下载页选择 macOS 对应的 .pkg,双击按向导安装。官方包默认将工具链放在 /usr/local/go,并通常会帮你把 /usr/local/go/bin 加入 PATH(以安装程序说明为准)。
  2. 更省事的方式是用 Homebrew:在终端执行 brew install go。Apple Silicon 上 Homebrew 默认在 /opt/homebrew,安装后一般可直接在终端里使用 go
  3. 打开「终端」,执行 go version。若提示找不到 go,而你用的是官方 .pkg 且怀疑 PATH 未生效,可在 shell 配置末尾追加(多数 macOS 默认 zsh,常用 ~/.zprofile~/.zshrc):
bash
export PATH=$PATH:/usr/local/go/bin

保存后执行 source ~/.zprofile(或你编辑的文件),重开终端再试 go version。使用 bash 时可改为编辑 ~/.bash_profile

  1. 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 SiliconIntel,或选 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

环境变量与扩展就绪后,建议先用命令行跑通第一个程序,再按需使用编辑器里的一键运行(见下文技巧)。

  1. 新建一个文件夹(例如 hello),在 VS Code 中用「文件 → 打开文件夹」打开它。
  2. 在其中新建 main.go,写入:
go
package main

import (
	"fmt"
)

func main() {
	fmt.Println("Hello, Golang")
}
  1. 在 VS Code 中打开终端(菜单「终端 → 新建终端」,或你习惯的终端快捷键),确认当前工作目录是该文件夹(若不是,先 cd 进去)。
  2. 执行:
shell
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 会提示你安装它。安装完成后,在 WindowsGOPATH\bin 里常见 dlv.exe;在 macOS / Linux 下一般为无后缀的可执行文件 dlv(路径同样多在 GOPATH/bin~/go/bin)。

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

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

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

项目目录解析(GOPATH 工作区)

使用 Go modulesGO111MODULE=on,推荐)时,项目可以放在任意目录,只要根目录有 go.mod不强制再把源码放进 GOPATH/src

若仍使用传统的 GOPATH 工作区(或希望理解历史布局),一个常见目录约定是:

  • bin:由 go install 等生成的可执行文件
  • pkg:编译产生的包归档等,供构建复用。
  • src源码,按「域名/作者/仓库」等路径组织包。

后文若提到「工作目录」,在模块模式下多指「含有 go.mod 的项目根目录」;在纯 GOPATH 模式下则多指 GOPATH 下的上述树形结构。

3. 配置环境变量

为什么要配置环境变量?

终端里执行 go versiongo run,以及 VS Code 里补全、格式化、go get 拉依赖,背后都会读 Go 和系统约定好的变量。大致分工是:

  • PATH(以及 GOROOT):让系统能找到 go 可执行文件,并让工具链知道标准库、编译器装在哪里;没配好时,常见现象是提示「找不到 go 命令」或工具链异常。
  • GOPATH / 模块相关:决定默认工作区、依赖缓存、go install 生成文件的落点;和 GO111MODULE 一起影响「按老 GOPATH 布局」还是「按 go.mod 管理项目」。
  • GOPROXY 等:控制从哪个地址下载公共模块;在国内直连官方源往往很慢或失败,不配代理时 go get、编辑器一键安装 gopls 等工具容易卡住。

安装包有时不会帮你把每一项都设到最合适的状态,所以需要按下面顺序自查、补齐,最后用 go env 核对,命令行与编辑器行为才能一致。

下面按常用顺序说明:PATH / GOROOTGOPATH模块与代理(GOPROXY、GO111MODULE),最后用 go env 做核对。macOS / Linux 上多数配置同样用 go env -w 完成;与 PATH 相关的部分在终端配置文件里修改(见下)。

设置环境变量:GOROOT 与 PATH

安装好 Go 后,要让 shell 或「终端」能找到 go 可执行文件:安装目录即 GOROOT,标准做法是把其下的 bin 目录加入 PATHGOROOT 表示编译器、工具、标准库的安装根路径;PATH 未包含 .../go/bin 时,执行 go getgo install 会报找不到命令。

Windows

图形界面操作如下(截图步骤为 Windows)。

右键「此电脑 / 我的电脑」→「属性」

再点击「高级系统设置」

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

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

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

打开 cmdPowerShell 执行 go version;能输出版本即生效。若仍失败,可尝试注销/重启后再试。

macOS

  1. 官方 .pkg 安装时,一般 GOROOT/usr/local/go,可执行文件在 /usr/local/go/bin。先在终端执行 go version
  2. 若无效,检查 PATH 是否包含上述 binecho $PATH
  3. 若需手动追加(zsh),在终端执行:
bash
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.zprofile
source ~/.zprofile

然后重开终端,再执行 go version

  1. 使用 Homebrew 安装的 go,通常已通过 Homebrew 的 bin 加入 PATH,用 which gogo env GOROOT 核对即可,一般不必再单独设 GOROOT。

设置环境变量:GOPATH

设置好 go 命令后,还要关心 GOPATH:默认工作区、依赖缓存、go install 安装的二进制等会与之相关。

Windows

可以在「系统环境变量」里为 GOPATH 指定一个目录(名称自定)。

不过不推荐只依赖系统里写死的单个 GOPATH;更常见的做法是用 go env -w 写入用户级配置(路径按你的磁盘习惯修改):

shell
go env -w GOPATH=E:\VMP-Code\Golang

macOS

一般不需要在「系统设置」里新建 GOPATH,直接用 go env -w 指到用户目录下即可,例如:

shell
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

shell
go env -w GOPROXY=https://goproxy.cn,direct

在 VS Code 里按提示安装 gopls 等 Go 工具时若下载失败,也可再执行上述命令后重试。

用 go env 查看与继续微调

在终端执行 go env 会列出当前生效的 Go 相关变量。Windowscmd 下常见 set KEY=valuePowerShell 或较新版本也可能显示为 KEY=valuemacOS / Linux 下多为 KEY="value",含义与查单个变量时一致。

Windows(cmd)示例:

text
> 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(终端)示例:

text
$ go env
GO111MODULE=""
GOARCH="arm64"
GOPATH="/Users/you/go"
GOPROXY="https://goproxy.cn,direct"
GOROOT="/usr/local/go"
GOOS="darwin"
...

查看单个变量时,在 go env 后加变量名即可,例如:

shell
go env GOPATH
go env GOROOT
go env GOPROXY

变量很多,日常开发在已配置好 PATH、GOPATH、GOPROXY 的基础上,建议再确认 Go modules 已开启:

shell
$ go env -w GO111MODULE=on

GOPROXY 若尚未设置,可执行(与上文「设置环境变量:GOPROXY」相同,无需重复):

shell
$ go env -w GOPROXY=https://goproxy.cn,direct

4. 常用 go 子命令速览

环境就绪后,日常开发大多通过终端里的 go 命令完成。下表是常用子命令的极简说明;完整列表见 go help,某一子命令的说明见 go help <子命令>(如 go help build)。

子命令说明
go version查看当前 Go 版本及平台信息。
go env查看或写入环境变量(如 go env GOPROXYgo 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 的前提下:

shell
# 版本与环境
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 generatego work 等)可在需要时查阅 官方文档 或执行 go help