首页 >后端开发 >Golang >如何访问特定 Go 包中的所有导出类型?

如何访问特定 Go 包中的所有导出类型?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-13 11:18:15485浏览

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

跨包访问导出类型

在 Go 中,导出类型可以被其他包访问。这允许代码设计中的重用和模块化。但是,如何从特定包访问所有定义的导出类型?

考虑以下示例:

package demo

type People struct {
    Name string
    Age  uint
}

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

在单独的包中,比方说,

import "demo"

从这个其他包中,我们寻求检索演示包中定义的所有导出类型。为了实现这一点,我们可以利用 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)
    }
}

此代码使用导入器导入演示包,并迭代其范围内定义的名称。结果输出将列出所有导出的类型,在本例中:

People
UserInfo

但是,值得注意的是,使用这种方法可能会导致 Go Playground 上出现错误。

以上是如何访问特定 Go 包中的所有导出类型?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn