Heim > Backend-Entwicklung > Golang > Wie kann ich auf alle exportierten Typen eines bestimmten Go-Pakets zugreifen?

Wie kann ich auf alle exportierten Typen eines bestimmten Go-Pakets zugreifen?

Mary-Kate Olsen
Freigeben: 2024-12-13 11:18:15
Original
485 Leute haben es durchsucht

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

Paketübergreifender Zugriff auf exportierte Typen

In Go können andere Pakete auf exportierte Typen zugreifen. Dies ermöglicht Wiederverwendung und Modularität beim Codedesign. Wie können Sie jedoch auf alle definierten exportierten Typen aus einem bestimmten Paket zugreifen?

Betrachten Sie das folgende Beispiel:

package demo

type People struct {
    Name string
    Age  uint
}

type UserInfo struct {
    Address  string
    Hobby    []string
    NickNage string
}
Nach dem Login kopieren

In einem separaten Paket, sagen wir,

import "demo"
Nach dem Login kopieren

Aus diesem anderen Paket versuchen wir, alle exportierten Typen abzurufen, die im Demopaket definiert sind. Um dies zu erreichen, können wir das Paket go/importer nutzen:

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)
    }
}
Nach dem Login kopieren

Dieser Code importiert das Demopaket mithilfe des Importers und iteriert über die definierten Namen innerhalb seines Gültigkeitsbereichs. Die resultierende Ausgabe listet alle exportierten Typen auf, in diesem Fall:

People
UserInfo
Nach dem Login kopieren

Es ist jedoch zu beachten, dass die Verwendung dieses Ansatzes zu einem Fehler auf dem Go Playground führen kann.

Das obige ist der detaillierte Inhalt vonWie kann ich auf alle exportierten Typen eines bestimmten Go-Pakets zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage