Retriving Reflect.Type from a Type or its Name in Go
這個問題探討是否有可能獲得一個類型的reflect.Type自定義類型,例如給定範例中的“t1”,無需實例化它或將其名稱用作字串。
關於問題是,是的,透過使用類型化的 nil 來實現這一點是可行的。以下程式碼片段示範了這種方法:
var v1 reflect.Type = reflect.TypeOf((*t1)(nil)).Elem()
在此範例中,我們利用類型化nil 指標取得「t1」的運行時類型。
至於第二部分,Go 中不支援直接從型別名稱檢索reflect.Type。運行時不會維護當前二進位檔案中所有類型的映射,這是完成此操作所必需的。
雖然可以想像創建類型註冊表包並註冊類型以通過字符串查找,但這將不可避免不完整。此外,匿名類型會帶來複雜性,因為它們的名稱可能不是唯一的。
雖然 Go 理論上可能提供一個根據名稱檢索類型的函數,但該功能不太可能在不久的將來實現。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3