go version 和 git --version 必须能直接运行,否则环境变量未对齐;Windows需确认Git安装时勾选“Add Git to PATH”,Mac/Linux需检查shell配置文件是否将/usr/local/bin和$GOROOT/bin加入PATH,并执行source激活。

go version 和 git --version 都得能直接敲出来
这是协同的前提。如果 go version 或 git --version 报“命令未找到”,说明环境变量没对齐,后续所有操作都会断在第一步。
Windows 用户用 MSI 安装 Go 时,GOROOT 和 PATH 通常自动写入,但 git 很可能没进 PATH——哪怕你双击安装了 Git for Windows,也得手动确认安装选项里勾选了“Add Git to the system PATH”(默认是“Git from the command line and also from 3rd-party software”)。Mac/Linux 用户则要检查 shell 配置文件(~/.zshrc 或 ~/.bash_profile)是否把 /usr/local/bin(Git 默认路径)和 $GOROOT/bin 都加进了 PATH。
- 验证方式:新开终端,分别运行
go version、git --version、echo $PATH,确认两个二进制路径都在输出里 - 常见坑:VS Code 终端能识别命令,但系统终端不能 → 说明 VS Code 启动时加载了某份配置(比如
~/.zprofile),而你手动开的终端没加载它;统一用source ~/.zshrc激活再试 - 不要依赖重启电脑来“修复 PATH”,那是掩盖问题,不是解决
GO111MODULE=on + GOPROXY 必须设好
Go Modules 是现代 Go 项目与 Git 协同的底层机制。没有它,go get 会尝试往 GOPATH 写,而 Git 无法追踪那些隐式下载的依赖;有了它,go.mod 和 go.sum 才能成为可提交、可审查、可复现的 Git 文件。
国内网络下,不配 GOPROXY 就等于放弃 go mod download —— 你会卡在 proxy.golang.org 超时,或反复重试后报 no matching versions for query "latest"。
- 执行这两条命令(任一终端):
go env -w GO111MODULE=ongo env -w GOPROXY=https://goproxy.cn,direct - 验证:
go env GO111MODULE GOPROXY应输出on https://goproxy.cn,direct - 注意
,direct:它保证私有仓库(如公司内网 GitLab 地址)不走代理,否则拉不到内部模块
git init 前先 go mod init
顺序错了,go.mod 里的 module 名就容易出错。比如你在 D:\myproj 目录下直接 git init,再 go mod init,默认生成的 module 名是 myproj;但如果这个项目将来要推到 github.com/yourname/myproj,module 名就得是后者,否则别人 go get github.com/yourname/myproj 会失败。
正确做法是:先确定远程 Git 仓库地址,再用完整路径初始化 module。
- 假设你要推到
https://github.com/yourname/hello,就在空目录下执行:go mod init github.com/yourname/hello - 然后立即
git init,再git add go.mod go.sum—— 这两个文件必须一起提交,go.sum是依赖校验锁,缺它 CI 构建就可能因哈希不匹配失败 - 别等写完几十个文件再补
go mod init,那时go mod tidy可能引入意外版本,且历史提交里没有初始依赖状态
团队共用 go version 和 .go-version
单机开发可以忽略 Go 版本差异,但只要涉及 CI(比如 GitHub Actions 或 GitLab CI),不同 Go 版本可能导致 go build 失败、go test 行为变化(如 net/http 的 timeout 默认值)、甚至 go mod vendor 输出不一致。
靠人肉喊“大家装 1.22.5”没用,要用机器 enforce。
- 在项目根目录放一个
.go-version文件,内容只有一行:1.22.5 - CI 脚本里明确调用
actions/setup-go@v5并读取该文件(GitHub Actions 支持go-version-file: '.go-version') - 本地开发时,推荐用
goenv(非gvm,后者已多年未维护):安装后执行goenv local 1.22.5,会在当前目录生成.go-version,goenv自动切换版本 - 关键点:
goenv切换的是GOROOT,不是 PATH 里某个软链接;它确保go version输出和 CI 完全一致
最容易被忽略的是 go.sum 文件的更新时机——每次 go get 或 go mod tidy 后必须 git add go.sum,否则别人 git pull 后直接 go build 可能因校验失败中断,而且这个错误不会立刻报在终端里,而是藏在 go list -m all 的输出中。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











