调用反射值的.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
s.Kind()
没有理由使用的地址value,然后调用Elem()that reflect.Value,它会取消对刚创建的指针的引用。
Elem()
reflect.Value
s := reflect.ValueOf(value).Elem() metric := s.FieldByName(subvalMetric).Interface() fmt.Println(metric)