首页 > 后端开发 > Golang > 如何检索 Go 包中的所有结构?

如何检索 Go 包中的所有结构?

Linda Hamilton
发布: 2024-10-29 21:00:29
原创
589 人浏览过

How can I retrieve all structures within a Go package?

如何在 Go 中获取包中的所有结构

在 Go 包中,可以获取包中所有结构的列表它们的名称或接口的形式。为此,最好的方法是解析 Go 源代码并专门隔离 ast.StructType。

源解析

要解析源代码,Go可以使用以下命令克隆源:

hg clone https://code.google.com/p/go/
登录后复制

源可用后,您可以使用漂亮的打印机隔离 ast.StructType,如以下代码片段所示:

func (P *Printer) Type(t *AST.Type) int {
    separator := semicolon;

    switch t.form {

    case AST.STRUCT, AST.INTERFACE:
            switch t.form {
            case AST.STRUCT: P.String(t.pos, "struct");
            case AST.INTERFACE: P.String(t.pos, "interface");
            }
            if t.list != nil {
                    P.separator = blank;
                    P.Fields(t.list, t.end);
            }
            separator = none;
            
    }
}
登录后复制

替代方法

go/lint 工具使用的另一种方法是在其 lint.go 文件中执行相同的任务:

case *ast.StructType:
        for _, f := range v.Fields.List {
            for _, id := range f.Names {
                check(id, "struct field")
            }
        }
登录后复制

通过实现通过这种方法,您可以获得指定包中定义的所有结构的列表。

以上是如何检索 Go 包中的所有结构?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板