Maison > développement back-end > Golang > Comment puis-je découvrir les types de packages exportés lors de l'exécution dans Go ?

Comment puis-je découvrir les types de packages exportés lors de l'exécution dans Go ?

Barbara Streisand
Libérer: 2024-12-16 18:46:11
original
808 Les gens l'ont consulté

How Can I Discover Exported Package Types at Runtime in Go?

Exposition des types de packages au moment de l'exécution : une exploration méthodologique

Bien que le package Reflect offre des capacités d'introspection complètes, il nécessite une connaissance préalable du type cible ou de la valeur. Cela représente un défi pour découvrir tous les types exportés, en particulier les structures, au sein d'un package en cours d'exécution.

Cependant, avec l'avènement de Go 1.5, un nouveau paradigme est apparu :

Utiliser le types et packages d'importateur

Dans Go 1.5 et au-delà, les types et packages d'importateur fournissent un mécanisme puissant pour inspecter les fichiers binaires et packages source :

package main

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)
    }
}
Copier après la connexion

En parcourant le Scope() du package importé, nous pouvons obtenir une liste de tous les identifiants exportés, y compris les noms de types. Cela fournit une vue complète des types exposés du package.

Solutions pré-1.5 : tirer parti du package ast

Avant Go 1.5, la seule approche fiable impliquait l'utilisation du package ast package pour compiler le code source et extraire les informations souhaitées. Il s'agit d'une méthode plus complexe et potentiellement sujette aux erreurs.

Application à la découverte de types personnalisés

La possibilité de découvrir des types de packages au moment de l'exécution est particulièrement utile dans des scénarios tels que celui que vous avez décrit : identifier et instancier des structures qui intègrent un type spécifié. En tirant parti des méthodes décrites ci-dessus, vous pouvez automatiser ce processus et éliminer le besoin de mises à jour manuelles ou de fonctions d'enregistrement.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal