方 法 | 备 注 |
---|---|
Field(i int) Value | 根据索引,返回索引对应的结构体成员字段的反射值对象。当值不是结构体或索引超界时发生宕机 |
NumField() int | 返回结构体成员字段数量。当值不是结构体或索引超界时发生宕机 |
FieldByName(name string) Value | 根据给定字符串返回字符串对应的结构体字段。没有找到时返回零值,当值不是结构体或索引超界时发生宕机 |
FieldByIndex(index []int) Value | 多层成员访问时,根据 []int 提供的每个结构体的字段索引,返回字段的值。 没有找到时返回零值,当值不是结构体或索引超界时发生宕机 |
FieldByNameFunc(match func(string) bool) Value | 根据匹配函数匹配需要的字段。找到时返回零值,当值不是结构体或索引超界时发生宕机 |
package main import ( "fmt" "reflect" ) // 定义结构体 type dummy struct { a int b string // 嵌入字段 float32 bool next *dummy } func main() { // 值包装结构体 d := reflect.ValueOf(dummy{ next: &dummy{}, }) // 获取字段数量 fmt.Println("NumField", d.NumField()) // 获取索引为2的字段(float32字段) floatField := d.Field(2) // 输出字段类型 fmt.Println("Field", floatField.Type()) // 根据名字查找字段 fmt.Println("FieldByName(\"b\").Type", d.FieldByName("b").Type()) // 根据索引查找值中, next字段的int字段的值 fmt.Println("FieldByIndex([]int{4, 0}).Type()", d.FieldByIndex([]int{4, 0}).Type()) }代码说明如下:
b
字符串,查找到 b 字段的类型。
NumField 5
Field float32
FieldByName("b").Type string
FieldByIndex([]int{4, 0}).Type() int
本文链接:http://task.lmcjl.com/news/15324.html