首页  >  文章  >  后端开发  >  你可以在 Go 中检索 `reflect.Type` 而不实例化类型或使用其名称作为字符串吗?

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

Barbara Streisand
Barbara Streisand原创
2024-11-12 08:45:02829浏览

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

从 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn