在 Go 中,反射庫允許開發人員檢查和修改程式的執行時間行為。一個常見的要求是從給定的類型名稱取得類型表示。在產生根據類型資訊動態建立物件的程式碼時,此功能特別有用。
運行時角度:限制
嘗試從字串類型名稱檢索類型表示在運行時面臨某些限制。程式中未明確引用的類型可能會在最終可執行檔中進行最佳化,從而無法取得其類型表示。
「編碼時間」視角:解決方法
但是,如果我們考慮「編碼時間」的角度,就有可能繞過這個限制。一種方法涉及使用指向類型的指標並使用「類型化nil」指標值來引用該類型而不分配記憶體:
type YourType struct {...} t := reflect.TypeOf((*YourType)(nil)).Elem()
此t 描述符將與透過建立YourType 的變數:
var x YourType t2 := reflect.TypeOf(x)
總之,雖然在運行時從類型名稱檢索類型表示可能具有挑戰性,但利用類型化nil 指標的「編碼時間」技術Values提供了一種動態存取類型資訊以用於程式碼產生的解決方法。
以上是如何在編譯時從類型名稱取得 Go 類型表示?的詳細內容。更多資訊請關注PHP中文網其他相關文章!