go mod download卡住或超时的根本原因是未配置国内代理,应立即执行go env -w GOPROXY=https://goproxy.cn,direct并验证生效,direct后缀不可省略以确保私有模块直连。

go mod download 卡住或报 timeout,先查 GOPROXY
国内直连 proxy.golang.org 基本不可用,不设代理就会卡在 fetch 阶段,错误常是 timeout 或 no such host。这不是网络问题,是代理没生效。
立即执行:go env -w GOPROXY=https://goproxy.cn,direct(推荐国内镜像);direct 是关键后缀,表示对私有仓库跳过代理。
- 验证是否生效:
go env GOPROXY输出应为你刚设的地址;若仍为空,说明go env -w在旧版 Go 不支持,改用export GOPROXY=...(macOS/Linux)或set GOPROXY=...(Windows CMD) - 顺手设
GOSUMDB=sum.golang.google.cn,避免校验和数据库访问失败 - VS Code 的
gopls继承 shell 环境变量,但 GoLand 必须进 Settings → Go → GOROOT → Reload 才会刷新代理配置
go mod init 报 cannot determine module path,检查当前目录和 GOPATH
这不是模块命名难,是你当前目录没在合法路径上下文里 —— Go 拒绝在空目录或非法路径下自动推导模块名。
- 直接加参数指定路径:
go mod init example.com/myapp,域名部分可随意,只要合法、不含空格或中文 - 别在
$GOPATH/src下执行go mod init:Go 1.11+ 模块模式下,项目可放在任意位置,刻意避开$GOPATH/src反而更干净 - 检查当前目录是否有残留的
go.mod或vendor/,有就删掉重试 - 目录名含空格或中文时,
go mod init会静默失败,改用纯英文路径再试
go install 工具失败,GOBIN 和 PATH 要对得上
go install golang.org/x/tools/gopls@latest 成功后却找不到命令,不是安装失败,而是生成的二进制没进 PATH。
- 默认安装到
$GOPATH/bin(如果GOBIN未设置),所以必须确保$GOPATH/bin在PATH中 - 更稳妥的做法是显式指定安装位置:
GOBIN=$HOME/bin go install golang.org/x/tools/gopls@latest,然后确认$HOME/bin已加入PATH - Windows 用户注意:
%GOPATH%\bin和%GOBIN%不能同时存在且指向不同目录,否则go install会写到一个地方,而PATH指向另一个 - 装完立刻验证:
which gopls(macOS/Linux)或where gopls(Windows),输出路径必须与GOBIN或$GOPATH/bin一致
go build 正常但运行时报 missing DLL / dyld error,GOROOT 和 cgo 配置要匹配
go run hello.go 成功,但 go build hello.go 出来的二进制双击闪退或报动态链接错误,大概率是 GOROOT 指向了不完整安装包,或 cgo 依赖缺失。
- 确认
go env GOROOT输出路径下确实存在bin/go和pkg/tool/目录;若指向$HOME/go这类用户目录,基本是手动设错了 - Windows 下常见于缺少 MinGW 或 MSVC 工具链,临时禁用 cgo:
CGO_ENABLED=0 go build hello.go - macOS 上 dyld 错误多因 SDK 路径不对,运行
xcode-select --install补全命令行工具 - Linux 用户若用自编译 Go,需确认
GOROOT下的src/runtime/cgo存在且未被删减
direct 后缀漏写导致私有模块拉不到。

















