Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mengubah Jenis Go Secara Dinamik daripada Rentetan?

Bagaimanakah Saya Boleh Mengubah Jenis Go Secara Dinamik daripada Rentetan?

DDD
Lepaskan: 2024-12-31 12:37:10
asal
181 orang telah melayarinya

How Can I Instantiate Go Types Dynamically from Strings?

Mencipta Contoh Jenis daripada Rentetan dalam Go

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()
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan