首页 > 后端开发 > Golang > 如何提取GoLang包的结构?

如何提取GoLang包的结构?

Barbara Streisand
发布: 2024-10-30 02:25:28
原创
411 人浏览过

How to Extract the Structure of a GoLang Package?

检索 Golang 中包的结构

我们可以将 GoLang 包中包含的所有结构枚举为名称或接口列表吗?

例如:

struct := list("fmt")
登录后复制

预期输出:

Formatter
GoStringer
Scanner
State
Stringer
登录后复制

最佳方法是解析 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")
            }
        }
登录后复制

以上是如何提取GoLang包的结构?的详细内容。更多信息请关注PHP中文网其他相关文章!

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