Maison > développement back-end > Golang > Comment puis-je récupérer tous les types exportés à partir d'un package Go sans l'importer ?

Comment puis-je récupérer tous les types exportés à partir d'un package Go sans l'importer ?

Patricia Arquette
Libérer: 2024-12-26 03:11:09
original
482 Les gens l'ont consulté

How Can I Retrieve All Exported Types from a Go Package Without Importing It?

Comment inspecter les types exportés à partir d'un package

Dans Go, les types peuvent être exportés à partir d'un package pour les rendre accessibles à d'autres packages. Parfois, il peut être nécessaire d'accéder aux informations sur ces types exportés sans importer directement le package. Cet article explique comment exporter tous les types définis à partir d'un package particulier à l'aide du package go/importer.

Question :

Considérez le package de démonstration suivant :

package demo

type People struct {
    Name string
    Age  uint
}

type UserInfo struct {
    Address  string
    Hobby    []string
    NickNage string
}
Copier après la connexion

Dans un autre package, comment récupérer tous les types exportés de la démo package?

Réponse :

Pour y parvenir, nous pouvons utiliser le package go/importer, qui fournit une API pour importer des packages et introspecter leur contenu. Voici comment procéder :

import (
    "fmt"
    "go/importer"
)

func main() {
    pkg, err := importer.Default().Import("demo")
    if err != nil {
        fmt.Println("error:", err)
        return
    }
    for _, declName := range pkg.Scope().Names() {
        fmt.Println(declName)
    }
}
Copier après la connexion

Dans ce code, nous importons d'abord le package de démonstration, puis utilisons la fonction importer.Default().Import("demo") pour obtenir le *Package représentant la démo package.

Ensuite, nous parcourons les noms de la portée du package, qui contient les noms de tous les types exportés dans ce package. Ces noms sont ensuite imprimés sur la sortie standard.

Remarque : Lors de l'exécution de ce code dans Go Playground, vous rencontrerez probablement une erreur. En effet, l'environnement de Go Playground n'a pas la capacité de récupérer les métadonnées des packages à partir de sources externes.

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