跨包访问导出类型
在 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中文网其他相关文章!