Maison >développement back-end >Golang >Comment puis-je répertorier par programme les méthodes publiques dans un package Go ?
Comment lister les méthodes publiques d'un package dans Go
Question :
Comment puis-je lister toutes les méthodes publiques disponibles dans un package spécifique dans Partir ?
Problème :
Considérez le projet suivant structure :
main.go:
package main func main() { // List all public methods here. }
l ibs/method.go :
package libs func Result1() { fmt.Println("Method Result1") } func Result2() { fmt.Println("Method Result2") }
Réponse :
Pendant que il peut paraître simple de lister des méthodes publiques en utilisant la réflexion, ce n'est malheureusement pas directement possible dans Go. En effet, le compilateur optimise les fonctions inutilisées et les supprime de l'exécutable final.
Approche alternative :
Si vous devez analyser les déclarations de fonction du package de manière statique, vous pouvez utilisez le package go/parser :
import ( "fmt" "go/ast" "go/parser" "go/token" "os" ) func main() { set := token.NewFileSet() packs, err := parser.ParseDir(set, "sub", nil, 0) if err != nil { fmt.Println("Failed to parse package:", err) os.Exit(1) } funcs := []*ast.FuncDecl{} for _, pack := range packs { for _, f := range pack.Files { for _, d := range f.Decls { if fn, isFn := d.(*ast.FuncDecl); isFn { funcs = append(funcs, fn) } } } } fmt.Printf("All functions: %+v\n", funcs) }
Cette approche vous fournira une liste de déclarations de fonctions, bien qu'elles soient non invocable. Pour exécuter ces fonctions, vous devrez créer un fichier séparé et les appeler individuellement.
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!