Dalam Go, mencipta tika baharu jenis daripada rentetan bukanlah tugas yang mudah. Penaipan statik dan mekanisme penghapusan kod mati Go menyukarkan untuk mencipta objek secara dinamik berdasarkan nama jenis yang disimpan sebagai rentetan.
Untuk menangani pengehadan ini, satu pendekatan ialah mengekalkan peta global[rentetan]reflect.Type. Peta ini boleh diisi dalam fungsi init() bagi pakej yang menentukan jenis yang boleh ditemui. Dengan menggunakan peta ini, anda boleh mencari reflect.Jenis jenis yang diingini dan gunakan reflect.Baharu untuk mendapatkan penunjuk kepada objek baharu jenis itu.
type MyStruct struct { // ... } func init() { register("MyStruct", reflect.TypeOf(MyStruct{})) }
Setelah mendaftar, anda boleh membuat contoh baharu menggunakan pantulan:
newObject := reflect.New(registered["MyStruct"]).Elem().Interface() myStruct := newObject.(MyStruct)
Walau bagaimanapun, adalah penting untuk mempertimbangkan bahawa pantulan boleh memperkenalkan overhed prestasi dan meningkatkan kerumitan kod anda. Ia mungkin lebih sesuai untuk meneroka pendekatan alternatif, seperti:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membuat Instanti Jenis Baharu dalam Go daripada Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!