首頁 >後端開發 >Golang >如何檢索 Go 包中的所有結構?

如何檢索 Go 包中的所有結構?

Linda Hamilton
Linda Hamilton原創
2024-10-29 21:00:29508瀏覽

How can I retrieve all structures within a Go package?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn