必须同时确认goland(about中含aarch64)和go sdk(go version输出darwin/arm64且file $(which go)含arm64)均为darwin/arm64架构,任一不符即被rosetta转译,导致调试卡顿、gopls崩溃或build出x86_64二进制。

确认 GoLand 和 Go SDK 都是 darwin/arm64 架构
只装对 GoLand 不代表能原生编译——GoLand 本身和它调用的 go 命令必须同为 darwin/arm64,否则调试器卡顿、gopls 崩溃、go build 输出 x86_64 二进制等问题都会出现。
分两步验证:
- GoLand:启动后进入
GoLand → About,查看版本字符串是否含aarch64或arm64(例如Build #GO-242.23726.123, built on July 30, 2024, aarch64) - Go SDK:
go version必须输出类似go version go1.23.3 darwin/arm64;再执行file $(which go),输出应含arm64,而非x86_64
任一不满足,说明你正在被 Rosetta 2 转译,不是原生运行。
安装 GoLand 时必须选 darwin-arm64.dmg,别信默认推荐
JetBrains 官网下载页在 Safari 下常自动推荐 Intel 版,尤其当你之前用过 Intel Mac 登录过 JetBrains 账户。清华镜像站更可靠:
- 访问 https://www.php.cn/link/501510c9ce823d6f2d88e8de67085f66
- 找最新版文件名含
aarch64或arm64的 dmg(如GoLand-2024.2.aarch64.dmg) - 下载后双击安装,**首次启动前右键应用 → “显示简介” → 取消勾选“使用 Rosetta”**
如果已误装 Intel 版,仅卸载 dmg 不够——需手动清理残留配置,否则新装版仍可能读取旧缓存导致插件异常。
Go SDK 路径必须手动指向 /usr/local/go(或 Homebrew arm64 路径)
GoLand 不会自动识别 Homebrew 安装的 go@1.26,尤其当系统里存在多个 Go 版本时,它大概率会抓到错误的 /usr/local/bin/go 符号链接(该链接可能指向已卸载的老版本)。
让智能体随处记录:支持本地 Markdown、Apple Notes、Bear、Obsidian、Notion、Evernote,可按笔记类型配置。
正确做法:
- 先确认真实路径:
brew --prefix go@1.26(典型输出:/opt/homebrew/opt/go@1.26) - 打开 GoLand →
Preferences → Go → GOROOT→ 点+→ 选择Add SDK → Go SDK→ 浏览到/opt/homebrew/opt/go@1.26/libexec(注意是libexec子目录,不是顶层) - 若用官方 pkg 安装,路径通常是
/usr/local/go,同样手动指定
别依赖 GoLand 自动探测——它只看 $PATH 中第一个 go,而这个 go 很可能来自失效软链。
CGO_ENABLED=1 时,C 库也得是 arm64 架构
即使 GoLand 和 go 都是原生 arm64,只要项目启用了 CGO(默认开启),且依赖了 C 库(如 SQLite、OpenSSL、zlib),就必须确保这些库也是 arm64 编译的。否则 go build 会静默失败,或运行时报 dyld: Library not loaded。
Homebrew 用户注意:
- 确保已安装 Apple Silicon 原生 Homebrew(即
arch -arm64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)") - 所有 C 依赖库必须用该 Homebrew 安装,例如:
brew install sqlite3 openssl - 验证:
file /opt/homebrew/lib/libsqlite3.dylib输出应含arm64 - 临时关闭 CGO 测试是否为根源:
CGO_ENABLED=0 go build;若成功,则问题一定出在 C 库架构
最容易被忽略的是:即使你没显式写 #include,某些 Go 标准库(如 net)在 macOS 上也会隐式调用系统 C 函数——所以 CGO_ENABLED=0 是排查架构问题的第一步,不是最终方案。










