Retriving Reflect.Type from a Type or its Name in Go
这个问题探讨是否有可能获得一个类型的reflect.Type自定义类型,例如给定示例中的“t1”,无需实例化它或将其名称用作字符串。
关于问题的第一部分,是的,通过使用类型化 nil 来实现此目的是可行的。以下代码片段演示了这种方法:
var v1 reflect.Type = reflect.TypeOf((*t1)(nil)).Elem()
在此示例中,我们利用类型化nil 指针获取“t1”的运行时类型。
至于第二部分,Go 中不支持直接从类型名称检索reflect.Type。运行时不会维护当前二进制文件中所有类型的映射,这是完成此操作所必需的。
虽然可以想象创建类型注册表包并注册类型以通过字符串查找,但这将不可避免不完整。此外,匿名类型会带来复杂性,因为它们的名称可能不是唯一的。
虽然 Go 理论上可能提供一个根据名称检索类型的函数,但该功能不太可能在不久的将来实现。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3