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
DDDOriginal
2024-11-14 17:20:02523Durchsuche

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
        })
    }
}

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
    }
)

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!

Stellungnahme:
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