如果a
reflect.Value是指针,则
v.Elem()等效于
reflect.Indirect(v)。如果不是指针,则它们不是等效的:
- 如果该值是接口,
reflect.Indirect(v)
则将返回相同的值,而v.Elem()
将返回所包含的动态值。 - 如果该值是其他值,则将感到
v.Elem()
恐慌。
该
reflect.Indirect助手用于需要接受特定类型或指向该类型的指针的情况。一个示例是
database/sql转换例程:通过使用
reflect.Indirect,它可以使用相同的代码路径来处理各种类型和指向这些类型的指针。



