从 Go 中的类型或其名称中检索 Reflect.Type
这个问题探讨是否可以获取一个类型的 Reflect.Type自定义类型,例如给定示例中的“t1”,无需实例化它或使用其名称作为string.
关于问题的第一部分,是的,通过使用类型化的 nil 来实现这一点是可行的。下面的代码片段演示了这种方法:
var v1 reflect.Type = reflect.TypeOf((*t1)(nil)).Elem()
在这个示例中,我们利用类型化的 nil 指针来获取“t1”的运行时类型。
至于第二部分,检索Go 不支持直接从类型名称中调用reflect.Type。运行时不会维护当前二进制文件中所有类型的映射,这是完成此操作所必需的。
虽然可以想象创建类型注册表包并注册类型以通过字符串查找,但这将不可避免不完整。此外,匿名类型会带来复杂性,因为它们的名称可能不是唯一的。
虽然 Go 理论上可能提供一个根据名称检索类型的函数,但该功能不太可能在不久的将来实现。
以上是你可以在 Go 中检索 `reflect.Type` 而不实例化类型或使用其名称作为字符串吗?的详细内容。更多信息请关注PHP中文网其他相关文章!