Maison >développement back-end >Golang >Comment puis-je accéder à tous les types exportés à partir d'un package Go spécifique ?

Comment puis-je accéder à tous les types exportés à partir d'un package Go spécifique ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-13 11:18:15487parcourir

How Can I Access All Exported Types from a Specific Go Package?

Accès aux types exportés dans les packages

Dans Go, les types exportés sont accessibles par d'autres packages. Cela permet la réutilisation et la modularité dans la conception du code. Cependant, comment accéder à tous les types exportés définis à partir d'un package spécifique ?

Considérons l'exemple suivant :

package demo

type People struct {
    Name string
    Age  uint
}

type UserInfo struct {
    Address  string
    Hobby    []string
    NickNage string
}

Dans un package séparé, disons,

import "demo"

À partir de cet autre package, nous cherchons à récupérer tous les types exportés définis dans le package de démonstration. Pour y parvenir, nous pouvons exploiter le package go/importer :

package main

import (
    "fmt"

    "golang.org/x/tools/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)
    }
}

Ce code importe le package de démonstration à l'aide de l'importateur et parcourt les noms définis dans sa portée. La sortie résultante répertoriera tous les types exportés, dans ce cas :

People
UserInfo

Cependant, il convient de noter que l'utilisation de cette approche peut entraîner une erreur sur Go Playground.

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!

Déclaration:
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