在Golang 中,您可能會遇到需要根據儲存為字串的名稱建立類型的新實例的情況。雖然這在舊版的 Go 中曾經是可能的,但它不再簡單了。
Go 是一種靜態類型語言,這意味著編譯器在以下位置驗證並強制執行資料類型:編譯時間。這確保了類型安全,但也意味著不直接支援從字串類型名稱建立新實例。
要實現此目的,您可以考慮使用反射,它提供了一種方法在運行時檢查和操作物件。然而,反射可能很複雜並會帶來性能損失。
使用反射的一種方法是維護全域映射[string]reflect.Type。這個映射可以在相關套件的 init() 函數中初始化,確保編譯器在執行檔中包含必要的型別。
然後你可以使用這個映射來尋找所需類型的reflect.Type並使用reflect.New建立一個新實例。若要將物件提取到介面中,請使用reflect.New(yourtype).Elem().Interface()。
或者,考慮探索更好的程序結構,以避免需要反思。例如,利用工廠方法或維護具有不同類型創建函數的 map[string]func() 介面{}可能會提供更簡單、更有效率的解決方案。
以上是如何從字串實例化 Go 類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!