如何在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中文網其他相關文章!