Reflect.Value.FieldByName导致恐慌

调用反射值的.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)

以上是 Reflect.Value.FieldByName导致恐慌 的全部内容, 来源链接: utcz.com/qa/426250.html

回到顶部