我有一个reflect.Type
,其中包含结构的双指针。我希望能够删除一个间接级别以具有指向该结构的指针。这可能吗?例如,我想这样做:
func foo(x interface{}) {
typ := reflect.TypeOf(x)
fmt.Printf("%v", typ) // prints **Foo
realType := typ.PointsTo()
fmt.Printf("%v", typ) // prints *Foo
}
但是据我所知,此功能不存在。有一个Indirect
可以在Value
上运行的功能,但是我看不到在Type
上可以运行的类似功能。
答案 0 :(得分:1)
我相信您正在寻找Type.Elem()
:
Elem返回类型的元素类型。
对于指针,“元素类型”是指针指向的类型。
func foo(x interface{}) {
typ := reflect.TypeOf(x)
fmt.Printf("%v", typ) // prints **Foo
realType := typ.Elem()
fmt.Printf("%v", realType) // prints *Foo
}