Skip to main content

cmd-list

📅 2026-02-12 ✏️ 2026-03-06 CS GO
No related notes

1 · go list 命令简要总结#

go list 用于列出 Go 包或模块的信息,常用 -f-json 控制输出格式。

1.1 · 基本用法

  • 默认:只输出包的导入路径(如 bytesencoding/json)。
  • -f format:用 Go template 自定义输出,默认等价于 -f '{{.ImportPath}}'
  • -json:以 JSON 输出,可加字段名限制输出字段。

1.2 · 包(Package)相关#

模板里拿到的是 Package 结构体,主要字段包括:

  • 路径与目录DirImportPathRoot
  • 包名与文档NameDoc
  • 源文件GoFilesTestGoFilesXTestGoFilesCgoFiles
  • 依赖ImportsDepsTestImportsXTestImports
  • 模块Module(所在模块信息)
  • 错误ErrorIncompleteDepsErrors

1.3 · 模块(Module)相关:-m#

  • -m:列出的是模块而不是包,模板里是 Module 结构体。
  • 字段包括:PathVersionDirGoModReplaceMainIndirect 等。
  • -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