2. Go 语言环境搭建(Windows/macOS/Linux)

在开始学习 Go 语言之前,我们需要正确安装和配置 Go 语言的开发环境。本文将详细介绍如何在 Windows、macOS(特别是 M1/M2 芯片)、Linux 三大平台上安装 Go,并进行环境配置和测试。

1. MacBook(macOS,M1/M2 芯片)环境搭建

由于 M1/M2 芯片采用 ARM 架构,安装 Go 时需要注意兼容性问题。
1.1 下载安装 Go(M1/M2 适配)
方法 1:使用 Homebrew 安装(推荐)

Homebrew 是 macOS 最流行的软件包管理工具,使用它可以轻松安装和管理 Go:

brew install go

安装完成后,运行:

go version

如果显示:

go version go1.21.3 darwin/arm64

说明安装成功,darwin/arm64 表示 Go 已经适配 M1/M2 架构。

方法 2:从官网下载安装

  1. 访问 Go 官网:https://go.dev/dl/
  2. 选择 macOS 版本
    • Apple Silicon(M1/M2):下载 arm64 版本
    • Intel Mac:下载 amd64 版本
  3. 安装 Go
    • 下载 .pkg 文件后双击安装
  4. 验证安装
go version

显示 go version go1.xx.xx darwin/arm64,表示安装成功。

1.2 配置 Go 环境变量

检查 GOPATH(Go 工作区)

echo $GOPATH

如果没有输出或 GOPATH 未配置,可以手动添加:

# 打开 shell 配置文件
nano ~/.zshrc  # 使用 Zsh(macOS 默认)
# 或者 nano ~/.bash_profile  # 旧版 macOS 可能使用 bash

# 添加以下内容:
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
export PATH=$PATH:/usr/local/go/bin

# 保存并刷新配置
source ~/.zshrc

验证配置

echo $GOPATH
go env GOPATH

输出 /Users/yourname/go 说明配置成功。

1.3 运行 Go 第一个程序

mkdir -p ~/go/src/hello
cd ~/go/src/hello
nano main.go

输入:

package main

import "fmt"

func main() {
    fmt.Println("Hello, Go!")
}

运行:

go run main.go

输出:

Hello, Go!

1.4 Mac(M1/M2)额外优化

✅ 解决 M1/M2 Rosetta 兼容问题

某些依赖(如 SQLite)可能默认使用 amd64 版本,导致 go build 失败。可以显式指定 ARM64 编译:

GOARCH=arm64 go build -o myapp

✅ 配置 Go Modules(推荐)
启用 Go Modules 进行依赖管理:

go env -w GO111MODULE=on
2. Windows 环境搭建

2.1 下载安装 Go
1. 下载 Windows 版本:https://go.dev/dl/
2. 运行 .msi 安装包
3. 验证安装
打开命令提示符(cmd)或 PowerShell:

go version

显示:

go version go1.21.3 windows/amd64

说明安装成功。

2.2 配置环境变量

  1. 右键 此电脑 → 属性 → 高级系统设置
  2. 环境变量 → 系统变量,添加:
GOPATH=C:\Users\你的用户名\go
GOBIN=%GOPATH%\bin
  1. 编辑 PATH,添加:
C:\Go\bin
%GOPATH%\bin
  1. 验证
echo %GOPATH%
go env
3. Linux 环境搭建

3.1 通过包管理器安装(Ubuntu / Debian)

sudo apt update && sudo apt install -y golang

3.2 手动安装

wget https://go.dev/dl/go1.21.3.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.3.linux-amd64.tar.gz

添加环境变量:

echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc

3.3 验证安装

go version
4. 依赖管理(Go Modules)

Go 1.14+ 版本默认启用 Go Modules 进行包管理。

4.1 启用 Go Modules

go env -w GO111MODULE=on

4.2 初始化项目

mkdir myproject && cd myproject
go mod init myproject

会生成 go.mod 文件:

<!-- go.mod -->
module myproject

go 1.21

4.3 添加依赖

go get github.com/gin-gonic/gin

4.4 查看依赖

cat go.mod
5. VS Code + Go 开发环境

5.1 安装 VS Code

👉 下载 VS Code

5.2 安装 Go 插件

  1. 打开 VS Code,搜索 Go,安装官方插件(Go Team @ Google)
  2. 按 Ctrl + Shift + P,输入:
Go: Install/Update Tools

选择 全部安装。

6. Docker + Go 开发环境(可选)

在 Mac(M1/M2)上,建议使用 Docker 运行 Go:

docker run --rm -it golang:1.21 bash

在容器内运行:

go version
7. 常见问题(FAQ)

❓ Mac M1/M2 执行 go get 报错

go: cannot find package

✅ 解决方案:

GOARCH=arm64 go get -u github.com/gin-gonic/gin

❓ Windows PowerShell 运行 go 报错

go: command not found

✅ 解决方案:
• 确保 C:\Go\bin 在 PATH 变量中
• 运行 go env 确认路径

8. 结论

✅ macOS(M1/M2)推荐使用 Homebrew 安装 Go
✅ Windows 需要手动添加环境变量 GOPATH
✅ Linux 推荐手动安装 Go 以获取最新版本
✅ Go Modules 是推荐的依赖管理方式
✅ VS Code + Go 插件是最佳开发环境

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容