Heim > Backend-Entwicklung > Golang > Wie kann ich alle Strukturen innerhalb eines Go-Pakets abrufen?

Wie kann ich alle Strukturen innerhalb eines Go-Pakets abrufen?

Linda Hamilton
Freigeben: 2024-10-29 21:00:29
Original
540 Leute haben es durchsucht

How can I retrieve all structures within a Go package?

So erhalten Sie alle Strukturen innerhalb eines Pakets in Go

Innerhalb eines Go-Pakets ist es möglich, eine Liste aller Strukturen in zu erhalten Form ihrer Namen oder Schnittstellen. Dazu besteht der beste Ansatz darin, den Go-Quellcode zu analysieren und den ast.StructType gezielt zu isolieren.

Quellanalyse

Um den Quellcode zu analysieren, wird der Go Quellen können mit dem folgenden Befehl geklont werden:

hg clone https://code.google.com/p/go/
Nach dem Login kopieren

Sobald die Quellen verfügbar sind, können Sie den ast.StructType mit einem hübschen Drucker isolieren, wie im folgenden Codeausschnitt gezeigt:

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;
            
    }
}
Nach dem Login kopieren

Alternative Methode

Ein weiterer Ansatz, den das go/lint-Tool verwendet, besteht darin, dieselbe Aufgabe in seiner lint.go-Datei auszuführen:

case *ast.StructType:
        for _, f := range v.Fields.List {
            for _, id := range f.Names {
                check(id, "struct field")
            }
        }
Nach dem Login kopieren

Durch Implementierung Mit diesem Ansatz können Sie eine Liste aller in einem bestimmten Paket definierten Strukturen erhalten.

Das obige ist der detaillierte Inhalt vonWie kann ich alle Strukturen innerhalb eines Go-Pakets abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage