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

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

Susan Sarandon
發布: 2024-12-29 19:11:11
原創
1003 人瀏覽過

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

透過反射從Go 中的名稱取得型態表示

問題:

問題:

問題:

問題:

問題:

如何使用Go 的反射從其名稱獲取類型表示圖書館?

答案:

理解這個問題取決於它的解釋。本質上有兩個觀點:

運行時不可訪問性:

如果類型的名稱在運行時作為字串提供,則無法將其轉換為類型表示形式。未明確引用的類型可能不會包含在最終的可執行二進位檔案中,從而使它們在運行時無法存取。

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

「編碼」時可訪問性:

var x YourType
t2 := reflect.TypeOf(x)

fmt.Println(t, t2)
fmt.Println(t == t2)
登入後複製

但是,在編碼(原始程式碼建立或產生),無需建立指定類型的變數並呼叫即可實現此目的Reflect.TypeOf().

取得嵌入類型:
main.YourType main.YourType
true
登入後複製

可以使用類型化的nil指標值並從指標的reflect.Type描述符遍歷到使用指標的基本或元素類型Type.Elem().

範例:

此方法產生與透過建立變數獲得的描述符(t2) 相同的型別描述符(t)類型和使用Reflect.TypeOf():輸出:結論:檢索類型時由於編譯限制,表示在運行時不可行,可以在編碼期間透過使用訪問嵌入類型輸入nil指針方法。

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

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