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

Reflect.Value.FieldByName导致恐慌

马星阑
2023-03-14
问题内容

调用反射值的.FieldByName方法时出现以下错误,确切的错误是:-

panic: reflect: call of reflect.Value.FieldByName on ptr Value

和代码是:-

s := reflect.ValueOf(&value).Elem() (value is a struct)
metric := s.FieldByName(subval.Metric).Interface() (subval.Metric is a string)

我了解的并不多,但这就是我所能获得的所有信息。

这是Go Playground上代码的链接:http :
//play.golang.org/p/E038cPOoGp


问题答案:

value已经是一个指向结构的指针。尝试打印出s.Kind()您的代码。

没有理由使用的地址value,然后调用Elem()that reflect.Value,它会取消对刚创建的指针的引用。

s := reflect.ValueOf(value).Elem()
metric := s.FieldByName(subvalMetric).Interface()
fmt.Println(metric)


 类似资料:
  • Cadence首次用户: 场景我有一个cadence服务器在我的沙箱环境中运行。目的是获取工作流状态 我正在尝试使用这个cadence客户端 go.uber.org/cadence/client 在我的本地主机上与我的沙箱cadence服务器对话。 这是我的简单代码片段: 我肯定弄错了,因为客户端不知道如何访问节奏服务器。我参考了这个https://cadenceworkflow.io/docs/

  • 我有一个奇怪的问题尝试导入matplotlib。每当我做导入的时候 导入matplotlib.pyplot 我收到以下错误消息(仅导入matplotlib时没有错误: 我在Windows 10的Anaconda发行版中使用Python 3.5。有人遇到同样的问题吗?我的设置中最近唯一的变化是(强制)升级到Windows 10... 谢谢并致以最良好的祝愿 皮埃尔

  • 我在osx 10.6.8上,试图使用bash来安装虚拟环境包装器,并且得到了神秘的反馈(至少对我来说是这样)。我能够安装虚拟环境。 也许有人能给我指出正确的方向。。。 失败安装的输出: 正在运行安装程序。py egg_包裹虚拟说唱歌手信息 已安装/private/tmp/pip_build_root/virtualenvwrapper/pbr-0.5.23-py2。6.鸡蛋 /系统/库/框架/Py

  • 问题内容: 我有一个像这个演示这样的数据结构。 和代码: 当我不为家庭使用Point时,它会返回“ bari”并且没关系。但是有了point,就会出现此错误。 反射:在ptr值上调用reflect.Value.FieldByName 我进行了很多搜索,但找不到答案可以提供帮助。 问题答案: 您已经注意到,是。正如错误所言,您不能在该值是指针的地方调用。 相反,您需要间接指针,以获取其指向的值,然后

  • 问题内容: 我注意到执行和启动任务有时会抛出EXC_BAD_ACCESS。给出错误的实际调用方法似乎有所不同,但始终来自。在大多数情况下,调用方法来自。我在下面附加了两个崩溃日志,其中包含不同的调用方。我还附加了的实现。 不幸的是,我无法可靠地重现该错误,因此没有共享的示例脚本。创建和启动对象最终将产生错误。较大的文件似乎更经常发生。我在这里实施错了吗?有没有一种好的方法可以从此堆栈跟踪进行调试?

  • 问题内容: Javascript上找到的脚本是:如何获取在中断标签之后/之前的文本节点,并用ddb标签包装它们? 在通过WebDriver加载的每个页面上运行时, 测试运行3分钟后出现以下错误: 基本上,其目的是捕获xpath语法无法选择的文本节点。Javascript在带有break的break标签之前和之后包装文本节点。然后,WebDriver可以使用xpath语法获取文本。 事情似乎运行顺利