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

Bagaimanakah Saya Boleh Mengubah Jenis Go daripada Rentetan?

Susan Sarandon
Lepaskan: 2024-12-21 08:45:11
asal
633 orang telah melayarinya

How Can I Instantiate Go Types from Strings?

Mencipta Contoh Baharu Jenis daripada Rentetan dalam Go

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.

Refleksi dan Penaipan Statik

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.

Menggunakan Refleksi

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.

Mengekalkan Peta Jenis Global

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().

Pendekatan Alternatif

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan