如果我有一个类型的名称(即“容器/矢量”),有没有办法查找具有给定名称的reflect.Type?我正在尝试编写一个简单的数据库支持的工作队列系统,如果没有这个功能,这将非常困难。
答案 0 :(得分:1)
由于名称解析是编译器/链接器的一部分,而不是运行时,我无法看到这是如何以任何微不足道的方式(或根本不可能)实现的。
但是,http://github.com/nsf/gocode可能会提供一些想法。虽然我很确定通过处理$ GOROOT中的.a文件来工作,所以我仍然看不到你如何获得reflect.Type。也许如果exp / eval包更成熟?
当然,如果你知道你将遇到的所有可能的类型,你总是可以制作一个reflect.Type的地图。但我假设你正在使用不可预测的输入,或者你会想到这一点。
答案 1 :(得分:0)
创建reflect.Type
的唯一方法是首先具有预期类型的具体值。您甚至无法从基类型([]T
)创建复合类型,例如切片(T
)。
从string
到reflect.Type
的唯一方法是自己输入地图。
mapping := map[string]reflect.Type {
"string": reflect.Typeof(""),
"container/vector": reflect.Typeof(new(vector.Vector)),
/* ... */
}