Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah Anda Dapatkan semula `reflect.Type` dalam Go Tanpa Menggerakkan Jenis atau Menggunakan Namanya sebagai Rentetan?

Bolehkah Anda Dapatkan semula `reflect.Type` dalam Go Tanpa Menggerakkan Jenis atau Menggunakan Namanya sebagai Rentetan?

Barbara Streisand
Barbara Streisandasal
2024-11-12 08:45:02828semak imbas

Can You Retrieve a `reflect.Type` in Go Without Instantiating the Type or Using its Name as a String?

Mendapatkan semula Reflect.Type daripada Type atau Namanya dalam Go

Soalan ini meneroka sama ada mungkin untuk mendapatkan reflect.Jenis a jenis tersuai, seperti "t1" dalam contoh yang diberikan, tanpa membuat seketika atau menggunakan namanya sebagai rentetan.

Mengenai bahagian pertama soalan, ya, ia boleh dicapai dengan menggunakan nol ditaip . Coretan kod berikut menunjukkan pendekatan ini:

var v1 reflect.Type = reflect.TypeOf((*t1)(nil)).Elem()

Dalam contoh ini, kami memanfaatkan penuding nol ditaip untuk mendapatkan jenis masa jalan "t1."

Bagi bahagian kedua, mendapatkan semula pantulan.Taip terus daripada nama jenis tidak disokong dalam Go. Masa jalanan tidak mengekalkan peta semua jenis dalam perduaan semasa, yang diperlukan untuk mencapainya.

Walaupun boleh difikirkan untuk mencipta pakej pendaftaran jenis dan mendaftar jenis untuk carian mengikut rentetan, ini tidak dapat dielakkan. menjadi tidak lengkap. Selain itu, jenis tanpa nama memperkenalkan komplikasi kerana nama mereka mungkin tidak unik.

Walaupun Go secara teorinya mungkin menawarkan fungsi untuk mendapatkan semula jenis berdasarkan namanya, tidak mungkin ciri ini akan dilaksanakan dalam masa terdekat.

Atas ialah kandungan terperinci Bolehkah Anda Dapatkan semula `reflect.Type` dalam Go Tanpa Menggerakkan Jenis atau Menggunakan Namanya sebagai Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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