首頁 >後端開發 >Golang >你可以在 Go 中檢索 `reflect.Type` 而不實例化類型或使用其名稱作為字串嗎?

你可以在 Go 中檢索 `reflect.Type` 而不實例化類型或使用其名稱作為字串嗎?

Barbara Streisand
Barbara Streisand原創
2024-11-12 08:45:02874瀏覽

Can You Retrieve a `reflect.Type` in Go Without Instantiating the Type or Using its Name as a String?

從 Go 中的類型或其名稱檢索 Reflect.Type

這個問題探討是否可以取得一個類型的Reflect.Type自訂類型,例如給定範例中的“t1”,無需實例化它或使用其名稱作為string.

關於問題的第一部分,是的,透過使用類型化的nil 來實現這一點是可行的。下面的程式碼片段示範了這個方法:

var v1 reflect.Type = reflect.TypeOf((*t1)(nil)).Elem()

在這個範例中,我們利用類型化的 nil 指標來取得「t1」的執行時間類型。

至於第二部分,檢索Go 不支援直接從型別名稱呼叫reflect.Type。運行時不會維護當前二進位檔案中所有類型的映射,這是完成此操作所必需的。

雖然可以想像建立類型註冊表包並註冊類型以透過字串查找,但這將不可避免不完整。此外,匿名類型會帶來複雜性,因為它們的名稱可能不是唯一的。

雖然 Go 理論上可能提供一個根據名稱檢索類型的函數,但該功能不太可能在不久的將來實現。

以上是你可以在 Go 中檢索 `reflect.Type` 而不實例化類型或使用其名稱作為字串嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn