使用 go list -m 命令可查看 Go 模块依赖:直接依赖用 go list -m -f '{{if not (or .Indirect .Main)}}{{.}}{{end}}',所有依赖用 go list -m all,特定模块版本用 go list -m module/path,JSON 格式化输出便于程序解析,有助于理清依赖结构和排查冲突。

在 Go 项目中使用 module 时,了解当前项目的依赖关系非常重要。可以通过 go list 命令快速查看当前 module 的依赖信息,无需手动解析 go.mod 文件。
查看当前 module 的直接依赖
运行以下命令可以列出当前 module 所依赖的模块(不包含间接依赖):
go list -m
如果只想看当前 module 引入的外部依赖模块,使用:
go list -m -f '{{.Path}} {{.Version}}' all
但更常用的是过滤出直接依赖。可以通过排除标准库和主模块本身来实现:
立即学习“go语言免费学习笔记(深入)”;
go list -m -f '{{if not (or .Indirect .Main)}}{{.}}{{end}}'
查看所有依赖(包括间接依赖)
使用 all 关键字可以列出全部依赖模块:
go list -m all
输出会显示每一行一个模块,格式为:module/path v1.2.3。第一行为当前模块,之后是其依赖树中的所有模块。
查看特定模块的依赖版本
若想查看某个具体模块的当前使用版本,例如 golang.org/x/text:
go list -m golang.org/x/text
如果该模块未被直接引用,但存在于依赖树中,也可以通过上述命令查到其版本。
以 JSON 格式输出便于分析
当需要程序化处理依赖信息时,可将结果输出为 JSON:
go list -m -json all
这个格式适合用工具进一步解析,比如统计版本、检查过期依赖等。
基本上就这些。掌握 go list -m 的用法,能帮你快速理清 Go module 项目的依赖结构,排查版本冲突也更高效。










