在您检索到之后
reflect.Value
通过使用
Field(i)
你可以得到一个
通过调用从中获取接口值
Interface()
所述接口值然后表示
字段的值。
没有将字段的值转换为具体类型的函数,
正如你可能知道的,go中没有泛型。因此,签名没有任何功能
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)
}