Di Golang, anda mungkin menghadapi senario di mana anda perlu mencipta contoh jenis baharu berdasarkan nama mereka yang disimpan sebagai rentetan . Walaupun ini pernah dilakukan dalam versi lama Go, ia tidak lagi mudah.
Go ialah bahasa yang ditaip secara statik, yang bermaksud bahawa pengkompil mengesahkan dan menguatkuasakan jenis data di masa menyusun. Ini memastikan keselamatan jenis tetapi juga bermakna mencipta kejadian baharu daripada nama jenis rentetan tidak disokong secara langsung.
Untuk mencapai ini, anda mungkin mempertimbangkan untuk menggunakan refleksi, yang menyediakan cara untuk memeriksa dan memanipulasi objek semasa runtime. Walau bagaimanapun, refleksi boleh menjadi rumit dan memperkenalkan penalti prestasi.
Satu pendekatan menggunakan pantulan ialah mengekalkan peta global[rentetan]reflect.Type. Peta ini boleh dimulakan dalam fungsi init() bagi pakej yang berkaitan, memastikan pengkompil menyertakan jenis yang diperlukan dalam boleh laku.
Anda kemudian boleh menggunakan peta ini untuk mencari pantulan.Jenis jenis yang diingini dan buat contoh baharu menggunakan reflect.New. Untuk mengekstrak objek ke dalam antara muka, gunakan reflect.New(yourtype).Elem().Interface().
Sebagai alternatif, pertimbangkan untuk meneroka penstrukturan atur cara yang lebih baik yang mengelakkan keperluan untuk refleksi. Contohnya, menggunakan kaedah kilang atau mengekalkan antara muka map[rentetan]func(){} dengan fungsi penciptaan untuk jenis yang berbeza mungkin memberikan penyelesaian yang lebih mudah dan cekap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengubah Jenis Go daripada Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!