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 關注
- 120 瀏覽
添加回答
舉報