透過反射從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中文網其他相關文章!