登录
首页 >  Golang >  Go问答

Reflect.Value.FieldByName 导致恐慌

来源:Golang技术栈

时间:2023-04-15 10:38:09 113浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《Reflect.Value.FieldByName 导致恐慌》,聊聊golang,希望可以帮助到正在努力赚钱的你。

问题内容

调用反射值的 .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()reflect.Value,这会取消引用您刚刚创建的指针。

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

今天带大家了解了golang的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>