Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 获取反射。从名称键入_Go - Fatal编程技术网

Go 获取反射。从名称键入

Go 获取反射。从名称键入,go,Go,如果我有一个类型的名称(即“container/vector”),是否有方法查找具有给定名称的reflect.type?我正在尝试编写一个简单的数据库支持的工作队列系统,如果没有这个特性,这将是非常困难的 我看不出这是怎么可能的,因为名称解析是编译器/链接器的一部分,而不是运行时 然而,我可能会提供一些想法。虽然我很确定这是通过处理$GOROOT中的.a文件来实现的,所以我仍然不知道如何获得reflect.Type。如果exp/eval软件包更成熟的话 当然,如果您知道将遇到的所有可能的类型,您

如果我有一个类型的名称(即“container/vector”),是否有方法查找具有给定名称的reflect.type?我正在尝试编写一个简单的数据库支持的工作队列系统,如果没有这个特性,这将是非常困难的

我看不出这是怎么可能的,因为名称解析是编译器/链接器的一部分,而不是运行时

然而,我可能会提供一些想法。虽然我很确定这是通过处理$GOROOT中的.a文件来实现的,所以我仍然不知道如何获得reflect.Type。如果exp/eval软件包更成熟的话


当然,如果您知道将遇到的所有可能的类型,您可以随时制作reflect.Type的映射。但我假设您使用的是不可预测的输入,否则您会想到这一点。

我看不出如何以任何简单的方式(或根本不可能)实现这一点,因为名称解析是编译器/链接器的一部分,而不是运行时的一部分

然而,我可能会提供一些想法。虽然我很确定这是通过处理$GOROOT中的.a文件来实现的,所以我仍然不知道如何获得reflect.Type。如果exp/eval软件包更成熟的话


当然,如果您知道将遇到的所有可能的类型,您可以随时制作reflect.Type的映射。但我假设您使用的是不可预测的输入,否则您会想到这一点。

创建
reflect.Type
的唯一方法是首先使用预期类型的具体值。您甚至不能从基类型(
t
)创建复合类型,例如切片(
[]t

字符串
reflect.Type
的唯一方法是自己输入映射

mapping := map[string]reflect.Type {
  "string": reflect.Typeof(""),
  "container/vector": reflect.Typeof(new(vector.Vector)),
  /* ... */
}

创建
reflect.Type
的唯一方法是首先使用预期类型的具体值。您甚至不能从基类型(
t
)创建复合类型,例如切片(
[]t

字符串
reflect.Type
的唯一方法是自己输入映射

mapping := map[string]reflect.Type {
  "string": reflect.Typeof(""),
  "container/vector": reflect.Typeof(new(vector.Vector)),
  /* ... */
}