【发布时间】:2020-03-07 22:27:34
【问题描述】:
给定这个结构
type A struct {
b *B
c string
d string
}
我想用反射检查哪些字段在指针类型后面有一个结构,所以特别是我想创建一个只有在遍历字段b 时才会成立的条件。根据我使用反射文档的尝试,我总是以 invalid Value 结束,因为每个后续方法都会出现恐慌,这不允许我走得更远。
package main
import (
"fmt"
"reflect"
)
type A struct {
b *B
c string
d string
}
type B struct {
}
func main() {
val := reflect.ValueOf(A{})
for i := 0; i < val.Type().NumField(); i++ {
if val.Field(i).Kind() == reflect.Ptr {
fmt.Println(reflect.Indirect(val.Field(i)).Kind())
}
fmt.Println(val.Field(i).Kind())
}
}
【问题讨论】:
标签: pointers go struct reflection