Récupération de la structure d'un package dans Golang
Pouvons-nous énumérer toutes les structures contenues dans un package GoLang sous forme de liste de noms ou d'interfaces ?
Par exemple :
struct := list("fmt")
Résultat attendu :
Formatter GoStringer Scanner State Stringer
L'approche la plus optimale consiste à analyser le code source de Go (qui peut être cloné à l'aide de la commande hg clone https://code.google.com/p/go/), extrayant spécifiquement les instances ast.StructType.
Ce processus est illustré par de jolies imprimantes :
func (P *Printer) Type(t *AST.Type) int { separator := semicolon; switch t.form { case AST.STRUCT, AST.INTERFACE: switch t.form { case AST.STRUCT: P.String(t.pos, "struct"); case AST.INTERFACE: P.String(t.pos, "interface"); } if t.list != nil { P.separator = blank; P.Fields(t.list, t.end); } separator = none;
Dans le même esprit , l'outil go/lint remplit une fonction similaire dans lint.go :
case *ast.StructType: for _, f := range v.Fields.List { for _, id := range f.Names { check(id, "struct field") } }
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!