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

如何提取GoLang包的结构?

Barbara Streisand
Barbara Streisand原创
2024-10-30 02:25:28409浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn