有没有一种方法可以从字符串创建结构实例?

有没有一种方法可以从字符串创建结构实例?,第1张

有没有一种方法可以从字符串创建结构实例?

Go中没有类型的中央注册表,因此在一般情况下您无法提出要求。

您可以使用从字符串到

reflect.Type
对应于每种类型的值的映射来手动建立自己的注册表来支持这种功能。例如:

var typeRegistry = make(map[string]reflect.Type)func init() {    myTypes := []interface{}{MyString{}}    for _, v := range myTypes {        // typeRegistry["MyString"] = reflect.TypeOf(MyString{})        typeRegistry[fmt.Sprintf("%T", v)] = reflect.TypeOf(v)    }}

然后,您可以创建如下类型的实例:

func makeInstance(name string) interface{} {    v := reflect.New(typeRegistry[name]).Elem()    // Maybe fill in fields here if necessary    return v.Interface()}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4923505.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存