使用go mod graph可查看模块依赖关系,输出格式为“被依赖者->依赖者”,结合go list -m all、go mod why等命令可分析依赖树、版本及冲突,辅以外部工具可实现树形可视化。

在 Golang 中查看模块依赖树,可以通过 go mod graph 命令直接获取依赖关系的原始数据。这个命令输出的是模块之间的依赖指向,每一行表示一个“包 被谁依赖 -> 依赖了谁”的关系。
使用 go mod graph 查看依赖关系
进入你的 Go 模块项目根目录,执行:
go mod graph输出示例如下:
example.com/myapp github.com/gin-gonic/gin@v1.9.0github.com/gin-gonic/gin@v1.9.0 gopkg.in/yaml.v2@v2.4.0
github.com/gin-gonic/gin@v1.9.0 github.com/golang/protobuf@v1.5.0
这表示 myapp 依赖 gin,gin 又依赖 yaml 和 protobuf。
立即学习“go语言免费学习笔记(深入)”;
以树形结构可视化依赖(需额外工具)
Go 原生命令不支持树状格式输出,但你可以借助外部工具或脚本将 go mod graph 的结果转为树形结构。
一种方法是使用开源工具如 modtree 或自己写一个简单解析器。也可以用如下方式配合 Unix 工具分析:
- 统计直接依赖:go list -m -json all | jq -r 'select(.Main==null) | .Path'
- 查看某个模块的依赖路径:go mod why -m module.name.here
分析依赖版本与冲突
使用以下命令查看所有加载的模块及其版本:
go list -m all如果想检查哪些模块被替换或忽略,查看 go.mod 文件中的 replace 和 exclude 指令。
运行 go mod tidy 可清理未使用的依赖,确保依赖树准确反映当前代码需求。
基本上就这些。通过组合使用 go mod graph、go list -m 和 go mod why,你能清晰掌握项目的依赖结构。










