首頁 > 後端開發 > Golang > 如何在編譯時從類型名稱取得 Go 類型表示?

如何在編譯時從類型名稱取得 Go 類型表示?

Susan Sarandon
發布: 2024-12-24 14:01:10
原創
334 人瀏覽過

How Can I Get a Go Type Representation from a Type Name at Compile Time?

如何在 Go 中使用反射從名稱中取得類型表示?

在 Go 中,反射庫允許開發人員檢查和修改程式的執行時間行為。一個常見的要求是從給定的類型名稱取得類型表示。在產生根據類型資訊動態建立物件的程式碼時,此功能特別有用。

運行時角度:限制

嘗試從字串類型名稱檢索類型表示在運行時面臨某些限制。程式中未明確引用的類型可能會在最終可執行檔中進行最佳化,從而無法取得其類型表示。

「編碼時間」視角:解決方法

但是,如果我們考慮「編碼時間」的角度,就有可能繞過這個限制。一種方法涉及使用指向類型的指標並使用「類型化nil」指標值來引用該類型而不分配記憶體:

type YourType struct {...}

t := reflect.TypeOf((*YourType)(nil)).Elem()
登入後複製

此t 描述符將與透過建立YourType 的變數:

var x YourType
t2 := reflect.TypeOf(x)
登入後複製

總之,雖然在運行時從類型名稱檢索類型表示可能具有挑戰性,但利用類型化nil 指標的「編碼時間」技術Values提供了一種動態存取類型資訊以用於程式碼產生的解決方法。

以上是如何在編譯時從類型名稱取得 Go 類型表示?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板