直接用go 1.23.x(当前最新稳定版),生产环境可选1.22.x;禁用beta/rc版,避免apt安装旧版(如1.19);go111module=on后gopath仅作缓存,无需强制项目路径;代理设为https://goproxy.cn,direct确保内外网兼容。

Go版本怎么选才不踩坑
直接用最新稳定版(go1.22.x 或 go1.23.x),别碰 beta 或 rc 版。Go 官方对旧版本支持周期短,go1.19 之前已停止安全更新;而 go1.21 开始默认启用 GOEXPERIMENT=fieldtrack,某些老项目依赖的反射行为可能出错。
验证方式很简单:
go version
如果输出带 devel 或 beta 字样,说明装错了——删掉重装官方二进制包,别用系统包管理器(如 apt install golang 常年卡在 go1.19)。
GOPATH 还要不要设
Go 1.16+ 默认启用模块模式(GO111MODULE=on),GOPATH 已退化为缓存路径($HOME/go),不再影响代码存放位置。你完全可以在任意目录下初始化项目,无需把代码塞进 $GOPATH/src。
但要注意两点:
Go语言(Golang)1.26.0版本提供 Go 官方 Windows amd64 MSI 安装包下载入口,版本号 1.26.0,可用于旧项目维护、兼容性测试和指定版本开发环境配置。
-
go mod init必须在项目根目录执行,模块名建议用实际域名或 GitHub 路径(如github.com/yourname/project),避免用main或空字符串 - 如果本地有旧项目还在用
GOPATH模式,运行前手动关掉模块:GO111MODULE=off go build,否则会报cannot find module providing package
依赖下载慢或超时怎么办
国内直连 proxy.golang.org 基本不可用,必须配代理。最稳的方式是改 go env:
go env -w GOPROXY=https://goproxy.cn,direct
这条命令把代理设为国内镜像,并保留 direct 回退机制——遇到私有仓库(如公司内网 GitLab)时自动绕过代理。
常见错误:
- 只写
https://goproxy.cn不加,direct→ 私有模块拉不到 - 用
http://开头 → Go 1.13+ 默认拒绝非 HTTPS 代理 - 误设
GOSUMDB=off→ 后续go get可能因校验失败中断(除非你明确信任所有依赖)
vendor 目录该不该提交到 Git
取决于部署场景:CI/CD 流水线用容器构建,且网络稳定 → 不提交 vendor,靠 go mod download 动态拉取更轻量;但如果你要交付可离线运行的二进制包,或者团队里有人经常在无外网环境调试 → 就得 go mod vendor 并提交。
关键细节:
-
go mod vendor不会清理未引用的包,得配合go mod tidy先做依赖收敛 - 提交前检查
vendor/modules.txt是否与go.mod一致,不一致说明 vendor 没同步干净 - Git 忽略
vendor/但没忽略vendor/modules.txt→ 后续go mod vendor会误删已提交的依赖
go.sum 校验逻辑的微小差异,以及私有模块路径和代理配置的耦合。哪怕只是换一台机器重装 Go,也得重新跑一遍 go mod download 并确认 checksum 无变化。golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!










