Comment puis-je obtenir la description de la fonction dans le code go?
runtime.FuncForPC(reflect.ValueOf(myFunc).Pointer()).Name()
J'aimerais avoir Ma très belle description .
Obtenir le nom d'un func est assez simple:
// My very nice description
func myFunc() { ... }
Y a-t-il quelque chose de similaire pour la documentation? Ce serait bien pour moi d'analyser le fichier go d'origine. Y a-t-il des raccourcis?
3 Réponses :
Vous pouvez utiliser l'outil godoc pour générer de la documentation.
Vérifiez le lien suivant https://blog.golang.org/godoc-documenting-go-code
Il devrait donner ce que vous recherchez
Merci. Je cherchais en fait go / doc qui reçoit l'AST et fournit un raccourci pour obtenir des documents func.
Ceci est une réponse de lien uniquement - si le lien meurt, la réponse ne contient aucune information utile. Voir Les réponses qui ne contiennent que des liens ailleurs sont-elles vraiment de "bonnes réponses"? ou Votre réponse est dans un autre château: quand une réponse n'est-elle pas une réponse? pour plus d'informations.
@WaiHaLee Accepté et modifié
Juste au cas où quelqu'un aurait besoin du code, je le posterai ici. C'est peut-être encore un peu moche, mais fonctionne bien pour mes scénarios. Vous pouvez l'ajuster selon vos propres besoins.
package funcreader
import (
"go/ast"
"go/doc"
"go/parser"
"go/token"
"path/filepath"
"reflect"
"runtime"
"strings"
)
// Get the name and path of a func
func FuncPathAndName(f interface{}) string {
return runtime.FuncForPC(reflect.ValueOf(f).Pointer()).Name()
}
// Get the name of a func (with package path)
func FuncName(f interface{}) string {
splitFuncName := strings.Split(FuncPathAndName(f), ".")
return splitFuncName[len(splitFuncName)-1]
}
// Get description of a func
func FuncDescription(f interface{}) string {
fileName, _ := runtime.FuncForPC(reflect.ValueOf(f).Pointer()).FileLine(0)
funcName := FuncName(f)
fset := token.NewFileSet()
// Parse src
parsedAst, err := parser.ParseFile(fset, fileName, nil, parser.ParseComments)
if err != nil {
log.Fatal(err)
return ""
}
pkg := &ast.Package{
Name: "Any",
Files: make(map[string]*ast.File),
}
pkg.Files[fileName] = parsedAst
importPath, _ := filepath.Abs("/")
myDoc := doc.New(pkg, importPath, doc.AllDecls)
for _, theFunc := range myDoc.Funcs {
if theFunc.Name == funcName {
return theFunc.Doc
}
}
return ""
}
Ce que vous recherchez n'est pas possible; la documentation n'est pas incluse dans la sortie compilée.
Pas au moment de l'exécution dans votre application (les commentaires ne sont pas inclus dans le binaire), mais il y a toujours
go docpendant que vous travaillez.Ce serait bien pour moi d'analyser le fichier et de le lire. Des fonctions de raccourci disponibles pour cela? Je suis actuellement en train de bidouiller avec go / ast, mais c'est un peu délicat. Je pensais qu'il pourrait y avoir une solution plus simple?
Utilisez le package go / doc pour extraire la documentation du code source.
Euh ... je suis un peu perplexe de ne pas avoir trouvé CELA. Merci.
Commande
go doc?