Maison >développement back-end >Golang >Pourquoi les packages Go Parser et Ast ne détectent-ils pas les commentaires de document sur les types de structure ?
Malgré l'utilisation de l'analyseur Go et des packages ast, le code fourni est incapable de détecter les commentaires de documentation sur les types de structure FirstType et SecondType.
La fonction readType du package go/doc suggère que lorsqu'un TypeSpec n'a pas de documentation associée, la documentation est récupérée à partir du GenDecl.
Pour inspecter l'AST et résoudre ce problème, les modifications suivantes ont été apportées au code :
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 }) } }
En incluant un cas pour *ast.GenDecl, le programme génère désormais la documentation perdue pour FirstType et SecondType.
Cependant, cette approche présente une limitation lorsque plusieurs types de structure sont définis dans un seul TypeSpec :
// This documents FirstType and SecondType together type ( // FirstType docs FirstType struct { // FirstMember docs FirstMember string } // SecondType docs SecondType struct { // SecondMember docs SecondMember string } )
Dans ce cas, les documents sont associés à la fois au GenDecl et aux TypeSpecs individuels.
Bien qu'il soit possible d'utiliser l'AST pour analyser les commentaires, il est préférable d'utiliser le package go/doc pour gérer cette tâche. Le package go/doc peut récupérer efficacement les commentaires de documentation pour divers composants Go, y compris les types de structure.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!