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

DDD
Freigeben: 2024-11-14 17:20:02
Original
400 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.

Das Problem verstehen

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

Inspizieren des AST

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

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 Einfügen eines Falls für *ast.GenDecl gibt das Programm nun die verlorene Dokumentation für FirstType aus und SecondType.

Eine interessante Beobachtung

Dieser Ansatz hat jedoch eine Einschränkung, 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 ist die Dokumente werden sowohl mit der GenDecl als auch mit der Person verknüpft TypeSpecs.

Fazit

Während die Verwendung des AST zum Parsen von Kommentaren möglich ist, ist es vorzuziehen, das Paket go/doc zu verwenden, um diese Aufgabe zu erledigen. 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