首頁 >後端開發 >Golang >如何提取GoLang包的結構?

如何提取GoLang包的結構?

Barbara Streisand
Barbara Streisand原創
2024-10-30 02:25:28408瀏覽

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