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 中国語 Web サイトの他の関連記事を参照してください。