Menu

Golang 安装教程:Windows、macOS 和 Linux

如何在 Windows、macOS 和 Linux 上下载并安装 Go,用 go version 检查安装结果,理解 GOPATH,以及解决“go: command not found”错误。

本页包含可运行的编辑器。编辑、运行,立即查看输出。

从 go.dev/dl 下载 Go,运行适合你系统的安装程序,打开一个新终端,然后运行 go version。在 Windows 和 macOS 上,安装就这么简单。在 Linux 上,你需要解压一个压缩包,并把一个目录加入 PATH。下面各节分别介绍每个系统,然后是检查方法和大家真正会遇到的错误。

不安装 Go 也可以先试试。下面这个程序在你的浏览器里运行,使用的是本站所用的 Go 版本,并会报告它运行在什么环境上:

在本地装好 Go 之后,同样的程序会打印你自己电脑的信息。

该下载哪个文件

下载页面为每种操作系统和 CPU 架构各列出一个文件:

系统文件说明
Windows,大多数电脑go1.24.5.windows-amd64.msiamd64 表示 64 位 Intel 或 AMD
ARM 版 Windowsgo1.24.5.windows-arm64.msiSurface Pro X、骁龙笔记本
macOS,Apple 芯片(M1 及更新)go1.24.5.darwin-arm64.pkgdarwin 就是 macOS
macOS,Intelgo1.24.5.darwin-amd64.pkg
Linux,大多数服务器和电脑go1.24.5.linux-amd64.tar.gz
ARM 版 Linuxgo1.24.5.linux-arm64.tar.gz装有 64 位系统的树莓派 4 和 5、AWS Graviton

这些示例中的版本号是 1.24.5。请选择最新的稳定版本;不同版本之间的安装步骤是一样的。

在 Windows 上安装 Go

  1. 下载 .msi 文件并运行它。
  2. 保持默认设置。Go 会安装到 C:\Program Files\Go,安装程序会把 C:\Program Files\Go\bin 加入你的 PATH。
  3. 关闭所有已打开的命令提示符或 PowerShell 窗口,再打开一个新的。安装期间就已打开的终端仍然使用旧的 PATH。
  4. 检查安装结果:
go version
go version go1.24.5 windows/amd64

如果你更喜欢用包管理器,winget 也可以:

winget install GoLang.Go

在 macOS 上安装 Go

使用官方安装包

下载适合你芯片的 .pkg 并打开它。它会把 Go 安装到 /usr/local/go,并通过 /etc/paths.d/go 文件把 /usr/local/go/bin 加入你的 PATH。打开一个新的终端窗口,然后运行:

go version
go version go1.24.5 darwin/arm64

使用 Homebrew

brew install go
go version

Homebrew 会把 Go 放在它自己的目录前缀下(在 Apple 芯片上是 /opt/homebrew),并把 go 链接到一个已经在 PATH 中的目录。之后用 brew upgrade go 升级。

两种方法选一种即可。如果同时用 .pkg 和 Homebrew 安装,PATH 中就会有两个 go 可执行文件,排在前面的那个生效。which go 会告诉你 shell 正在使用哪一个。

在 Linux 和 Ubuntu 上安装 Go

官方方法适用于所有发行版。先删除之前的安装,因为在旧目录上直接解压会混入两个版本的文件,导致工具链损坏:

cd ~/Downloads
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.24.5.linux-amd64.tar.gz

然后把 Go 加入 PATH。把下面这行追加到 ~/.profile(bash)或 ~/.zshrc(zsh)中:

export PATH=$PATH:/usr/local/go/bin

在当前 shell 中加载它并检查:

source ~/.profile
go version
go version go1.24.5 linux/amd64

Ubuntu 软件包:apt 和 snap

Ubuntu 提供两种快捷方式,各有取舍:

# Distribution package: easy, but usually several releases old
sudo apt install golang-go

# Snap: tracks current Go releases
sudo snap install go --classic

apt 的版本问题比看起来更重要。模块会在 go.mod 中声明最低 Go 版本。从 Go 1.21 起,一个写着 go 1.23 的模块无法用更旧的工具链构建,除非 Go 能为你下载一个更新的工具链;而 1.21 之前的工具链仍会尝试构建,并在遇到第一个较新的特性时失败(见下文“保持 Go 为最新版本”)。如果你是通过 apt 安装的,运行 go version,并和 go.dev/dl 上的版本比较一下。

检查安装

用三条命令确认环境可以正常工作:

go version
go env GOROOT GOPATH
which go
go version go1.24.5 linux/amd64
/usr/local/go
/home/ana/go
/usr/local/go/bin/go
  • GOROOT 是 Go 本身的安装位置。绝不要把你自己的代码放在那里,你也不需要设置它。
  • GOPATH 默认是 $HOME/go(Windows 上是 %USERPROFILE%\go)。Go 把下载的模块存放在 $GOPATH/pkg/mod,并把 go install 构建的程序放在 $GOPATH/bin。
  • which go(Windows 上是 where go)显示 shell 实际运行的是哪个可执行文件。每当 go version 报告的版本和你预期的不一样时,就用它查一查。

运行你的第一个程序

你的代码可以放在任何目录中。创建一个文件夹,初始化一个模块,然后写一个文件:

mkdir hello
cd hello
go mod init example.com/hello
go: creating new go.mod: module example.com/hello

把下面的代码保存为该文件夹中的 main.go:

然后运行它:

go run .
Go is installed and working.

go run . 会编译当前目录中的包并运行它。hello world 页面逐行解释了这个程序,go mod init 这一步则在 Go 模块页面中讲解。

把 GOPATH/bin 加入 PATH

用 go install 安装的工具会放在 $HOME/go/bin,而这个目录默认不在你的 PATH 中。如果你安装了某个工具,shell 却说找不到它,就把这个目录也加进去:

go install golang.org/x/tools/cmd/goimports@latest
export PATH=$PATH:$(go env GOPATH)/bin
goimports -h

把 export 这一行写进 ~/.profile 或 ~/.zshrc,这样打开新终端后它依然有效。在 Windows 上,安装程序已经把 %USERPROFILE%\go\bin 加入了你的用户 PATH。

保持 Go 为最新版本

升级时,用安装旧版本时的同一种方式安装新版本即可。在 Linux 上,这意味着重复 rm -rf /usr/local/go 和 tar 两个步骤;不要跳过删除这一步。

从 Go 1.21 起,go 命令还可以按需获取更新的工具链。如果某个模块的 go.mod 写着 go 1.24,而你安装的是 Go 1.22,那么只要 GOTOOLCHAIN 保持默认值 auto,运行 go build 就会把 Go 1.24 下载到模块缓存中并使用它。你安装的 Go 保持不变;只有这个模块会用更新的版本构建。

如果想保留一个旧版本用于测试,可以把它和现有版本并行安装:

go install golang.org/dl/go1.23.4@latest
go1.23.4 download
go1.23.4 version

常见安装错误

go: command not found 或 zsh: command not found: go。 shell 找不到这个可执行文件。在 Linux 上,检查 /usr/local/go/bin 是否写在 shell 实际读取的那个文件的 export PATH 行里(zsh 是 ~/.zshrc,bash 是 ~/.profile 或 ~/.bashrc),然后打开一个新终端。运行 echo $PATH 查看 shell 当前的 PATH。

'go' is not recognized as an internal or external command(Windows)。 关闭终端再重新打开。如果问题依旧,打开“编辑系统环境变量”,点击“环境变量”,确认 C:\Program Files\Go\bin 在 Path 中。VS Code 的内置终端会继承 VS Code 启动时的环境,所以也要重启 VS Code。

升级后 go version 仍显示旧版本。 你的 PATH 中有两份安装。运行 which -a go(Windows 上是 where go),删掉不需要的那一份,常见的情况是 /usr/bin/go 处的 apt 软件包遮住了 /usr/local/go/bin/go。

go: go.mod file not found in current directory or any parent directory。 Go 已经正确安装;你是在模块之外运行了 go build 或 go run .。先在项目文件夹中运行 go mod init example.com/yourname。

在 Linux 上升级后,标准库出现奇怪的编译错误。 新的压缩包被解压到了旧目录之上。彻底删除 /usr/local/go,然后重新解压。

解压时提示权限不足(Permission denied)。 /usr/local 属于 root,所以 rm 和 tar 命令需要 sudo。你自己的代码永远不需要 sudo。

编辑器配置

任何编辑器都可以用,但要安装 Go 支持,这样才有代码补全、错误高亮和保存时自动格式化。在 VS Code 中,安装官方的 Go 扩展(由 Google 的 Go 团队发布);第一次打开 .go 文件时,它会提示你安装 Go 语言服务器 gopls。JetBrains 出品的 GoLand 是主要的商业选择。Vim 和 Neovim 通过各自的 LSP 客户端使用 gopls。

常见问题

Golang 怎么安装?

从 go.dev/dl 下载适合你系统的安装包。在 Windows 上运行 .msi,在 macOS 上运行 .pkg(或者 brew install go),在 Linux 上把压缩包解压到 /usr/local,再把 /usr/local/go/bin 加入 PATH。打开一个新终端,运行 go version 确认安装成功。

怎么解决“go: command not found”?

shell 在你的 PATH 中找不到 go 可执行文件。在 Linux 上,把 export PATH=$PATH:/usr/local/go/bin 加到 ~/.profile(zsh 则是 ~/.zshrc),然后打开一个新终端。如果用的是 Windows 和 macOS 的安装包,通常只要关闭终端再重新打开就行,因为终端会一直沿用它启动时的 PATH。

Ubuntu 上怎么安装 Go?

使用官方压缩包:sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.24.5.linux-amd64.tar.gz,然后把 /usr/local/go/bin 加入 PATH。sudo apt install golang-go 也可以,但 Ubuntu 的软件包往往落后好几个版本。sudo snap install go --classic 会跟进最新版本。

需要设置 GOPATH 吗?

不需要。从 Go 1.16 起,模块模式是默认模式,你的代码可以放在任何目录中。GOPATH 默认是 $HOME/go,只用于存放模块下载缓存和 go install 构建的程序,这些程序会放在 $HOME/go/bin。

怎么查看安装的 Go 版本?

运行 go version。它会打印类似 go version go1.24.5 linux/amd64 的内容:先是版本号,然后是操作系统和 CPU 架构。go env 会显示完整的配置,包括 GOROOT(Go 的安装位置)和 GOPATH。

Coddy 编程语言插图

和 Coddy 一起学编程

开始