"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment découvrir dynamiquement les types de packages d'exportation dans le langage Go?

Comment découvrir dynamiquement les types de packages d'exportation dans le langage Go?

Publié le 2025-05-02
Parcourir:149

How Can I Dynamically Discover Exported Package Types in Go?

Recherche de types de packages exportés dynamiquement

Contrairement aux capacités de découverte de type limité dans le package de réflect, cet article explore des méthodes alternatives pour découvrir tous les types de packages (en particulier les structures) à Runtime. Plus tard)

Dans Go 1.5 et les versions suivantes, les packages Types et importateurs introduisent un moyen puissant d'inspecter les packages. Voici comment vous pouvez les utiliser:

import ( "FMT" "Allez / importateur" ) func main () { pkg, err: = importor.default (). import ("time") Si err! = Nil { fmt.printf ("Erreur:% s \ n", err.Error ()) retour } pour _, Decrname: = range pkg.scope (). names () { fmt.println (Decname) } }

import (
    "fmt"
    "go/importer"
)

func main() {
    pkg, err := importer.Default().Import("time")
    if err != nil {
        fmt.Printf("error: %s\n", err.Error())
        return
    }
    for _, declName := range pkg.Scope().Names() {
        fmt.Println(declName)
    }
}

Avant la version 1.5, le package AST peut être utilisé pour analyser et inspecter le code source pour la découverte de type. Cependant, cette approche est plus complexe et peut nécessiter un code d'analyse supplémentaire.

Exemple de cas d'utilisation

Cette capacité de découverte de type peut être utilisée dans divers scénarios. Par exemple, dans un utilitaire de génération de code, il permet d'identifier les types qui intègrent un type spécifié. Cela permet la création de fonctions de test basées sur des types découverts sans exiger des étapes de régénération manuelle.

Conclusion

Malgré le manque de découverte de type natif dans le package de réflect, Go fournit des méthodes alternatives pour examiner les types de packages à Runtime. Cela permet une introspection de type plus flexible et peut être exploité dans diverses applications, y compris la génération de code et les cadres de test.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3