Dalam Go, selalunya perlu untuk mencipta tika jenis baharu secara dinamik, seperti semasa menghuraikan fail konfigurasi atau mengendalikan API permintaan. Ini boleh dicapai melalui refleksi, tetapi proses itu telah berkembang dalam versi bahasa terkini.
Malangnya, dalam Go, mencipta objek daripada rentetan jenis tidak mudah kerana sifat taip statik bahasa itu. Pemaut mengalih keluar kod yang tidak digunakan, menjadikannya mustahil untuk menjamin ketersediaan jenis yang diingini pada masa jalan.
Satu penyelesaian adalah untuk mengekalkan peta global yang mengaitkan nama jenis (sebagai rentetan) dengan pantulan yang sepadan. Jenis objek. Peta ini boleh dimulakan dalam fungsi init() bagi pakej yang mentakrifkan jenis boleh ditemui.
Menggunakan peta ini, anda boleh mencari pantulan.Jenis jenis yang diingini dan cipta objek baharu menggunakan reflect.Baharu. Untuk mengekstrak objek daripada nilai yang dicerminkan, anda boleh menggunakan Elem() untuk menyahrujuk penuding dan Antaramuka() untuk mengembalikan nilai yang dicerminkan sebagai antara muka.
reflect.New(yourtype).Elem().Interface()
Walau bagaimanapun, adalah wajar mempertimbangkan pendekatan alternatif, seperti sebagai kaedah kilang atau peta fungsi penciptaan, yang mungkin lebih cekap dan kurang terdedah kepada ralat daripada bergantung pada pantulan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengubah Jenis Go Secara Dinamik daripada Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!