Dalam Go, tidak mudah untuk membuat instantiat objek apabila hanya nama jenis tersedia sebagai rentetan. Ini kerana Go ditaip secara statik dan mengalih keluar kod yang tidak digunakan semasa pemautan.
Menggunakan Refleksi
Walaupun terdapat kekangan, refleksi boleh digunakan untuk mencipta kejadian secara dinamik. Berikut ialah prosesnya:
Contoh Kod:
import ( "fmt" "reflect" ) // Global map for type lookup var typeMap = make(map[string]reflect.Type) func init() { // Initialize typeMap by adding types to it typeMap["MyStruct"] = reflect.TypeOf(MyStruct{}) } func main() { typeName := "MyStruct" t := typeMap[typeName] instance := reflect.New(t).Elem().Interface() fmt.Println(instance) }
Pendekatan Alternatif
Selain refleksi, pertimbangkan perkara berikut alternatif:
Nota: Pendekatan ini mengelakkan kerumitan refleksi dan berkemungkinan meningkatkan pengendalian ralat semasa penyusunan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Kejadian Go Hanya Menggunakan Nama Jenisnya sebagai Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!