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