reflect.Value使用检索字段的后,
Field(i)您可以通过调用从中获取接口值
Interface()。然后,所述接口值表示字段的值。
您可能知道,没有函数可以将字段的值转换为具体类型,因为您可能没有泛型。因此,不存在与签名没有功能
GetValue() T
与
T被该字段(其改变,当然,这取决于字段)的类型。
您可以随时获得最接近的结果,
GetValue() interface{}而这正是所
reflect.Value.Interface()提供的。
以下代码说明了如何使用反射(play)获取结构中每个导出字段的值:
import ( "fmt" "reflect")func main() { x := struct{Foo string; Bar int }{"foo", 2} v := reflect.ValueOf(x) values := make([]interface{}, v.NumField()) for i := 0; i < v.NumField(); i++ { values[i] = v.Field(i).Interface() } fmt.Println(values)}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)