cmd-list
1 · go list 命令简要总结#
go list 用于列出 Go 包或模块的信息,常用 -f、-json 控制输出格式。
1.1 · 基本用法
- 默认:只输出包的导入路径(如
bytes、encoding/json)。 -f format:用 Go template 自定义输出,默认等价于-f '{{.ImportPath}}'。-json:以 JSON 输出,可加字段名限制输出字段。
1.2 · 包(Package)相关#
模板里拿到的是 Package 结构体,主要字段包括:
- 路径与目录:
Dir、ImportPath、Root - 包名与文档:
Name、Doc - 源文件:
GoFiles、TestGoFiles、XTestGoFiles、CgoFiles等 - 依赖:
Imports、Deps、TestImports、XTestImports - 模块:
Module(所在模块信息) - 错误:
Error、Incomplete、DepsErrors
1.3 · 模块(Module)相关:-m#
-m:列出的是模块而不是包,模板里是 Module 结构体。- 字段包括:
Path、Version、Dir、GoMod、Replace、Main、Indirect等。 -u:显示可升级信息,新版本在Update,若有撤回会设置Retracted。-versions:在Versions里列出该模块所有已知版本。-retracted:输出撤回版本及说明。- 无参数时列出主模块;
all列出主模块及所有依赖;path@version可查询指定版本。
1.4 · 小结
| 需求 | 典型用法 |
|---|---|
| 列包路径 | go list ./... |
| 包详细信息 | go list -json ./... |
| 自定义输出 | go list -f '{{.Dir}}' ./... |
| 列依赖 | go list -deps ./... |
| 列模块 | go list -m all |
| 模块可升级信息 | go list -m -u -json all |
一句话:查包用默认/-f/-json,查依赖加 -deps(按深度优先后序遍历:先列依赖,再列包本身),查模块用 -m,要升级信息加 -u。