用 go mod 初始化模块并加入依赖
准备工作
安装 Go(
go version有输出)。依据:Go 官方文档 Modules · Managing dependencies。[1]
核实日期:2026-10-24。
操作步骤
1、在项目根初始化模块
做什么:
mkdir hello && cd hello
go mod init example.com/hello为什么:go mod init 生成 go.mod,声明模块路径。之后所有依赖版本都以模块为单位记录,便于复现构建。[1]
怎么确认:目录出现 go.mod,首行是 module example.com/hello;go env GOMOD 指向该文件。
2、编写代码后用 tidy 同步依赖
做什么:写一个引用外部模块的 .go 文件,然后执行:
go mod tidy
go build为什么:tidy 根据源码增补需要的依赖、移除不用的依赖,并维护 go.sum 校验信息。官方推荐用它保持模块文件与源码一致。[1]
怎么确认:go.mod 出现 require 块;go.sum 非空;go build 成功且生成可执行文件。
3、显式加入或升级某个版本
做什么:
go get example.com/some/module@v1.2.3
go mod tidy为什么:需要钉死版本、升级小版本或回退时,显式 go get 比只靠自动解析更可控。[1]
怎么确认:go.mod 中对应模块版本变为指定版本;go list -m all 能列出该模块及其版本。
4、查看模块图(可选)
做什么:go list -m all 或 go mod graph | head
为什么:排查“到底引进了哪个传递依赖”时,列表/图比肉眼翻 go.sum 快。[1]
怎么确认:输出包含直接依赖与传递依赖;升级后对比两次输出的差异。
Go 模块把“导入路径”和“版本选择”变成显式文件。go.mod 描述你想要的模块与版本约束,go.sum 则记录下载内容的校验和,用来发现被篡改或意外替换的依赖。
日常开发里,最常见的失败是模块路径和仓库真实路径不一致,或者私有库没配置 GOPRIVATE 导致去公共代理拉取失败。这两类问题都不是业务代码写错,而是模块元数据/环境没对齐。
提交代码前跑一次 go test ./... 和 go mod tidy,可以减少“我这边能编译、CI 却缺依赖”的扯皮。需要审查供应链时,再辅以 go list -m all 看传递依赖是否混进不熟悉的模块。
若依赖下载缓慢,优先检查代理与求和校验是否被拦截,而不是反复删掉 go.sum 碰运气。保留 go.sum 能让同事和 CI 用同一份校验结果。
注意事项
模块路径应与仓库真实导入路径一致,否则他人
go get会失败。私有模块配置
GOPRIVATE;不要把 token 写进脚本明文或提交进仓库。提交时同时提交
go.mod与go.sum。
来源
[1] Go Docs · Managing dependencies · https://go.dev/doc/modules/managing-dependencies · 核实于 2026-10-24
#Go #go.mod #模块 #依赖 #教程
成为第一条评论!
Nobody's responded to this post yet. Add your thoughts and get the conversation going.