Heim > Backend-Entwicklung > Golang > Warum erkennen Go-Parser- und Ast-Pakete keine Dokumentkommentare zu Strukturtypen?

Warum erkennen Go-Parser- und Ast-Pakete keine Dokumentkommentare zu Strukturtypen?

DDD
Freigeben: 2024-11-14 17:20:02
Original
500 Leute haben es durchsucht

Why Aren't Go Parser and Ast Packages Detecting Doc Comments on Struct Types?

Go-Parser erkennt keine Dokumentkommentare zum Strukturtyp

Trotz Verwendung der Parser- und AST-Pakete von Go ist der bereitgestellte Code nicht in der Lage, die Dokumentationskommentare zu den Strukturtypen FirstType zu erkennen und SecondType.

Verstehen des Problems

Die readType-Funktion des go/doc-Pakets schlägt vor, dass, wenn eine TypeSpec keine zugehörige Dokumentation hat, die Dokumentation aus dem GenDecl abgerufen wird.

Überprüfen des AST

Um den AST zu überprüfen und dieses Problem zu beheben, wurden die folgenden Änderungen am Code vorgenommen:

func main() {
    // ...

    for _, f := range d {
        ast.Inspect(f, func(n ast.Node) bool {
            switch x := n.(type) {
            // ...

            case *ast.GenDecl:
                fmt.Printf("%s:\tGenDecl %s\n", fset.Position(n.Pos()), x.Doc.Text())
            }

            return true
        })
    }
}
Nach dem Login kopieren

Durch das Einschließen eines Falls für *ast.GenDecl gibt das Programm jetzt Ausgaben aus die verlorene Dokumentation für FirstType und SecondType.

Eine interessante Beobachtung

Dieser Ansatz weist jedoch eine Einschränkung auf, wenn mehrere Strukturtypen in einer einzigen TypeSpec definiert sind:

// This documents FirstType and SecondType together
type (
    // FirstType docs
    FirstType struct {
        // FirstMember docs
        FirstMember string
    }

    // SecondType docs
    SecondType struct {
        // SecondMember docs
        SecondMember string
    }
)
Nach dem Login kopieren

In diesem Fall werden die Dokumente sowohl mit der GenDecl als auch mit den einzelnen TypeSpecs verknüpft.

Fazit

Während die Verwendung des AST zum Parsen von Kommentaren möglich ist, ist es vorzuziehen, dafür das Paket go/doc zu verwenden diese Aufgabe übernehmen. Das Paket go/doc kann Dokumentationskommentare für verschiedene Go-Komponenten, einschließlich Strukturtypen, effektiv abrufen.

Das obige ist der detaillierte Inhalt vonWarum erkennen Go-Parser- und Ast-Pakete keine Dokumentkommentare zu Strukturtypen?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage