解决panic: reflect: call of reflect.Value.Elem on struct Value [recovered]
报错时的情景:
panic: reflect: call of reflect.Value.Elem on struct Value [recovered]
panic: reflect: call of reflect.Value.Elem on struct Value
基于反射给结构体赋值时出现的。
看看出问题的代码:
ms := Abc{}
sValue := reflect.ValueOf(ms).Elem()
sValue.Field(i).SetString("xxx")
原因正如所提示,在调用Elem时不能作用在结构体上,那怎么弄?
ms := &Abc{}
sValue := reflect.ValueOf(ms).Elem()
sValue.Field(i).SetString("xxx")
传指针,这样就OK了!
另外看Elem()方法的注释也能看出来:
// Elem returns the value that the interface v contains
// or that the pointer v points to.
// It panics if v's Kind is not Interface or Pointer.
// It returns the zero Value if v is nil.
func (v Value) Elem() Value {
...
}
即如果不是Interface or Pointer就会panic。
解决panic: reflect: call of reflect.Value.Elem on struct Value [recovered]相关推荐
- 【Go】panic: reflect: call of reflect.Value.FieldByName on ptr Value
产生原因 调用 FieldByName()方法时,调用者与预期类型不相符. // 错误代码 func setNewArticleInfoToCache(article *Article) {field ...
- go学习之异常记录01:panic: reflect: call of reflect.Value.NumField on int Value
代码: package mainimport ("fmt""reflect""strconv""strings" )ty ...
- go语言反射机制、reflect.TypeOf、 reflect.ValueOf、字符串处理(详解)
文章目录 前言 一.反射基本概念 ①go语言反射为何而生? ②反射弊端 ③怎样使用反射机制? 一.反射使用到的库及常用函数 ①用到的库 ②常用的字符串处理函数 (1) 将字符串加载为固定的类型strc ...
- Go 语言编程 — reflect 反射机制
目录 文章目录 目录 为什么需要反射? reflect 包 通过 reflect.TypeOf() 获取对象的反射类型 reflect.Type 通过 reflect.Elem() 获取指针所指向的对 ...
- Golang的反射reflect深入理解和示例
[TOC] Golang的反射reflect深入理解和示例 [记录于2018年2月] 编程语言中反射的概念 在计算机科学领域,反射是指一类应用,它们能够自描述和自控制.也就是说,这类应用通过采用某种机 ...
- Go Reflect
最近在看一些go语言标准库以及第三方库的源码时,发现go的reflect被大量使用,虽然反射的机制大多数语言都支持,但好像都没有go一样这么依赖反射的特性.个人觉得,reflect使用如此频繁的一个重 ...
- golang reflect
go语言中reflect反射机制.详细原文:地址 接口值到反射对象 package mainimport ("fmt""reflect" )func main( ...
- golang Reflect包
2019独角兽企业重金招聘Python工程师标准>>> Reflect包 Reflect 反射包有2个重要的类型,分别通过Typeof()和ValueOf()返回. 分别在源码包里的 ...
- 反射(reflect)机制
什么是反射 官方对此有个非常简明的介绍,两句话耐人寻味: 反射提供一种让程序检查自身结构的能力 反射是困惑的源泉 要深刻理解反射,个人感觉需要花时间在官方博客上再加以练习,循序渐进,慢慢体会. 反射的 ...
最新文章
- 客户端(C#)调用CXF搭建的webservice的出现一些问题记录
- Standby Redo Log 的设定原则、创建、删除、查看、归档位置
- elementui table 不显示表头_不懂就问 || 单晶XRD第二期课后答疑出炉啦!!
- java comparable接口_Java面试题之Java集合篇三
- CCF真题 201312-2 ISBN号码
- 云计算-openstack简介
- [js] 请使用js实现一个秒表计时器的程序
- 软件工程 - 设计模式学习之工厂方法模式Factory Method
- HIVE: hive.error.on.empty.partition
- Python解决模块无法引用问题之pymysql模块导入
- linux安装neo4j
- 图像处理_形态学运算中的膨胀与腐蚀直观理解
- 读react.js小书 中组件的render的方法(从零学react)
- 8uftp无法取得目录列表,解决8uftp无法取得目录列表的问题只需4步
- HTML怎么设置左边外距5像素,css怎么设置左边距
- Mac系统常用软件总结
- echarts省级地图显示(入门)
- seaborn小提琴图
- 如何查看计算机是否新装了硬盘,如何查看笔记本电脑换固态硬盘 判断笔记本电脑是否可换固态硬盘的技巧...
- 怎么设置android投屏 桌面程序,手机怎么投屏到电脑?
热门文章
- 火车浏览器怎么样,是什么样特性
- 了解全角和半角,以及全角和半角的相互转换
- 女神节表白:因一个分号被拒
- python socket 域名_python实现域名系统(DNS)正向查询的方法
- python+sklearn,机器学习-线性回归实现-以披萨尺寸预测价格
- oppo r9 android 版本,OPPO R9s直接升安卓7.1:被曝只是改了版本号?
- Windows sever 2019AD域怎么设置域内计算机屏幕锁屏时间
- 高斯模糊加图片展示(仿ipad qq图片点击展示)
- 优化算法:指数加权平均
- softmax 回归