test2
This commit is contained in:
parent
b13fb5e2ac
commit
08cd7e6a4c
38
main.go
38
main.go
|
@ -5,9 +5,47 @@ import (
|
|||
"go/ast"
|
||||
"go/parser"
|
||||
"go/token"
|
||||
"os"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// 设置文件路径
|
||||
filePath := "/home/eson/workspace/requests"
|
||||
|
||||
// 解析指定目录下的所有Go源代码文件
|
||||
fset := token.NewFileSet()
|
||||
pkgs, err := parser.ParseDir(fset, filePath, nil, 0)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
|
||||
// 遍历每个包
|
||||
for _, pkg := range pkgs {
|
||||
// 遍历每个文件
|
||||
for _, file := range pkg.Files {
|
||||
// 遍历每个声明
|
||||
for _, decl := range file.Decls {
|
||||
// 检查声明是否为函数声明
|
||||
if decl, ok := decl.(*ast.FuncDecl); ok {
|
||||
// 检查函数是否导出(暴露)
|
||||
if decl.Recv == nil && decl.Name.IsExported() {
|
||||
// 打印函数签名
|
||||
|
||||
fmt.Printf("%s(%#v, %#v) error\n", decl.Name, decl.Type.Params, decl.Type.Results)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 辅助函数:将类型转换为字符串表示
|
||||
func typeString(typ ast.Expr) string {
|
||||
return os.Getenv("GOPATH") + "/src/reflect/type.go" // 这里只是一个示例,你需要替换为你的实际代码来解析类型并将其转换为字符串表示
|
||||
}
|
||||
|
||||
func main2() {
|
||||
fset := token.NewFileSet()
|
||||
pkgs, err := parser.ParseDir(fset, "/home/eson/workspace/requests", nil, 0)
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in New Issue
Block a user