用 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.