1 回答
TA贡献1803条经验 获得超3个赞
断续器; 是用于获取反射的表达式。
接口类型的类型描述符。不能将使用用于相同目的(请阅读下面的原因)。reflect.TypeOf((*error)(nil)).Elem()
error
reflect.TypeOf(error(nil))
reflect.TypeOf((*error)(nil)).Elem()
通过使用类型的类型化指针值来实现其目标,将其传递给 以获取类型的描述符,并使用 获取元素(基)类型的类型描述符,即 。nil
*error
reflect.TypeOf()
reflect.Type
*error
Type.Elem()
*error
error
反映。类型Of()
需要一个值:interface{}
func TypeOf(i interface{}) Type
基本上,无论你传递给什么值,如果它还不是接口值,它将被隐式地包装在。如果传递的值已经是接口值,则存储在其中的具体值将作为 传递为 。reflect.TypeOf()
interface{}
interface{}
因此,如果您尝试将值传递给它,因为 是接口类型,则存储在其中的具体值将被“重新打包”为值。接口类型错误
将不会被保留/转移!error
error
interface{}
如果传递一个类型的值,例如,由于接口值本身是 ,它不包含具体的值和类型,因此将传递一个值,这将导致返回。引用自:nil
error
error(nil)
nil
nil
interface{}
nil
reflect.Type
reflect.TypeOf()
类型Of 返回表示 i 的动态类型的反射类型,如果 i 是 nil 接口值,则类型Of 返回 nil。
如果传递类型的值(可能是指针),则它不是接口值,而是指针值(指向接口的指针)。因此,它将包装在一个值中,并且存储在其中的具体值将是类型 。使用,您可以访问指向的类型,即 。*error
nil
interface{}
*error
Type.Elem()
error
这是使用指向接口的指针有意义的罕见情况之一,实际上是不可避免的。
查看相关问题:
反射有什么区别。ValueOf() 和 Value.Elem() 在 go?
- 1 回答
- 0 关注
- 92 浏览
添加回答
举报