檢索 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中文網其他相關文章!