当前位置: 首页 > 面试题库 >

在golang中,是否可以从类型本身,从名称到字符串中获取reflect.Type?

乜清野
2023-03-14
问题内容
type t1 struct { i int; s string }
var v1 reflect.Type = /* how to set to t1's reflect.Type? */
  1. 是否可以实例化t1的reflect.Type?

  2. 是否可以通过将名称“ t1”作为字符串来获取t1的reflect.Type?


问题答案:

在1,是的,有点:

var v1 reflect.Type = reflect.TypeOf((*t1)(nil)).Elem()
fmt.Println(v1)  // prints "main.t1"

无需实例化。但是,Go没有类型文字,这是我想您要的。要获取类型的运行时值,您需要具有某种值。如果您不希望或无法在运行时创建该值,则可以从类型为nil的值中提取它。如果您不喜欢每次都查找的想法,可以将此运行时类型存储在变量中。

在2,不,不是真的。这将要求Go运行时在当前二进制文件中维护所有类型的映射,这有很多问题。您 可以
创建一个类型注册表包,并注册所有可能要通过字符串检索的类型,但这总是不完整的,如果您知道所需的类型,则始终可以使用TypeOf。由于您可以拥有匿名类型,而且“
t1”之类的名称不一定是唯一的,这使情况变得更加复杂,因为另一个软件包的名称可能相同。Go运行时可能会提供一个从字符串名称给出类型的函数,但我怀疑这种情况是否会发生。



 类似资料:
  • 问题内容: 我有一个类型T的泛型类,我想获得实例化时传递给该类的类型的名称。这是一个例子。 我已经逛了好几个小时,但似乎找不到任何方法。有人尝试过吗? 任何帮助是极大的赞赏。 谢谢 问题答案: 单纯的快速方法是不可能的。 可能的解决方法是: 这些限制取决于它仅适用于类的事实。 如果这是通用类型: 返回全名(包括名称空间): 这就是为什么func搜索字符的最后一次出现。 测试如下: 更新Swift

  • 问题内容: 我有一个名字叫类的名字(没有扩展名)。我想将其分配给变量,如下所示: 我怎样才能做到这一点? 问题答案: 但是您应该是完全合格的-即

  • 问题内容: 示例代码: 现在,说我想让用户输入一个字符串: 然后,说出用户输入。我将如何检索命名的变量并对其进行处理?像这样: 我抬头看了一些东西,却没发现太多。我确实找到了对“反射API”的引用,但是对于这一简单任务而言,它似乎太复杂了。 有没有办法做到这一点,如果是的话,那是什么?如果“反射”确实有效并且是唯一的方法,那么我将如何使用它来做到这一点?它的教程页面包含了各种我无法理解的内部内容。

  • 我能想到的唯一方法是一个回溯算法,它搜索这个词是否可能。有没有其他更快的算法来解决这个问题? 假设我有很多查询(关于查找一个单词是否存在)。那么是否可以做一些预处理来更快地回答查询呢?

  • 问题内容: 如果我有一个JSON.net用于绑定序列化JSON字符串中的数据的C#模型类,是否可以通过该类创建查询字符串以发出初始请求? 模型类示例: Querystring示例: 因此,我想做的本质是从模型对象中同时收集“ id”和“ some_string”,以便我可以动态创建“&fields”参数。谢谢! 问题答案: @Leigh Shepperson有正确的主意;但是,您可以使用LINQ用

  • 问题内容: 在Django中,你可以指定如下关系: 然后在内部必须将字符串“ Person”转换为模型。 该功能在哪里?我想使用它,但是找不到。 问题答案: 在Django 1.7中已弃用(在1.9中删除),以支持新的应用程序加载系统。 Django 1.7文档为我们提供了以下内容: