”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 你可以在 Go 中检索 `reflect.Type` 而不实例化类型或使用其名称作为字符串吗?

你可以在 Go 中检索 `reflect.Type` 而不实例化类型或使用其名称作为字符串吗?

发布于2024-11-10
浏览:374

Can You Retrieve a `reflect.Type` in Go Without Instantiating the Type or Using its Name as a String?

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