package demotype People struct { Name string Age uint}type UserInfo struct { Address string Hobby []string NickNage string}另一个包:import "demo"在这个包中,如何获取从演示包中导出的所有类型?
3 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
使用go/importer:
pkg, err := importer.Default().Import("time")
if err != nil {
fmt.Println("error:", err)
return
}
for _, declName := range pkg.Scope().Names() {
fmt.Println(declName)
}
(注意,这会在 Go Playground 上返回错误)。
Qyouu
TA贡献1786条经验 获得超11个赞
你来自某种脚本语言吗?看起来是这样。
Go 有充分的理由进行传播,以免将“魔法”带入您的代码。
一开始看起来很简单(可以访问所有结构,在某处自动注册它们,“保存”编码)最终会在您的项目变大时陷入调试和维护噩梦。
然后,您将不得不记录和查找所有糟糕的约定和含义。我知道我在说什么,因为我用 ruby 和 nodejs 多次走这条路。
相反,如果您将所有内容都明确化,您将获得一些功能,例如重命名People
结构以让编译器告诉您它在整个代码库中的使用位置(并且 go 编译器比您快)。
这种可能性对于调试、测试和重构来说是无价的。
此外,它使您的代码在编写代码几个月后易于为您的编码人员和您自己推理。
- 3 回答
- 0 关注
- 268 浏览
添加回答
举报
0/150
提交
取消