檢索介面的Reflect.Type
透過Reflect 套件決定類型是否實作介面需要將Reflect.Type 傳遞給反射.Type.Implements ()。本文探討了取得此類類型的過程。
取得未初始化介面的型別
嘗試擷取未初始化錯誤介面(這是一個介面)的型別type) 直接使用reflect.TypeOf()會導致嘗試訪問所取得類型的Kind()方法時出現恐慌。為了避免這個問題,可以採用以下方法:
方法1:
var err error t := reflect.TypeOf(&err).Elem()
此方法涉及取得指向介面的指標的類型,以及然後使用Elem( ) 檢索底層具體類型(元素)。
方法 2 (單行):
t := reflect.TypeOf((*error)(nil)).Elem()
這種方法利用了這樣一個事實:nil 介面值可以被類型斷言為任何介面類型。透過建立一個指向所需介面類型的 nil 指標並檢索其類型,您可以直接取得特定類型,而無需取得變數的位址。
以上是如何在 Go 中檢索介面的「reflect.Type」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!