You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过命令行(含godoc)列出Go目录下的所有函数声明

没问题!想要用命令行提取指定Go文件夹里的所有函数声明,结合godoc或者Go自带的工具就能轻松搞定,给你几个实用的方案:

方法1:用godoc+grep快速提取

首先得确保你装了godoc——Go 1.13之后的版本需要手动安装:

go install golang.org/x/tools/cmd/godoc@latest

然后直接针对目标文件夹执行命令,就能过滤出所有函数声明:

godoc -src ./your-go-folder | grep -E '^func\s+\w+\(.*\)\s+.+'
  • -src 参数让godoc输出带源代码结构的文档,包含完整的函数定义
  • 正则表达式^func\s+\w+\(.*\)\s+.+专门匹配命名函数的签名行,避免误抓匿名函数或其他内容

如果想要更整洁的格式(比如去掉多余空格),可以再加个sed处理:

godoc -src ./your-go-folder | grep -E '^func\s+\w+\(.*\)\s+.+' | sed 's/\s\+/ /g'

方法2:用Go自带工具组合实现(无需额外装godoc)

如果你不想折腾godoc,用Go原生的go list和go doc也能实现:

go list -f '{{.Funcs}}' ./your-go-folder | tr -d '[]' | xargs -I {} go doc -short ./your-go-folder {} | grep '^func'

解释下每一步:

  • go list -f '{{.Funcs}}' 列出目标包下的所有导出函数名
  • tr -d '[]' 去掉输出里的方括号符号
  • xargs 把每个函数名传给go doc -short,获取简短的函数签名
  • 最后用grep过滤出纯函数声明行

方法3:直接遍历Go文件解析(最轻量化)

如果只是简单提取,甚至可以直接用find+awk遍历所有.go文件:

find ./your-go-folder -name "*.go" -exec awk '/^func [a-zA-Z]/ {print $0}' {} \;

这里/^func [a-zA-Z]/确保只匹配以func开头且后面跟字母的命名函数,排除掉匿名函数和方法定义(如果不需要方法的话)。

小提示:如果你的文件夹还不是一个Go包(没有go.mod),建议先执行go mod init temp初始化一个临时包,这样godoc和go doc能更准确地识别包内的内容。

内容的提问来源于stack exchange,提问作者Kenenbek Arzymatov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:12:13