Rumah > pembangunan bahagian belakang > Golang > Bolehkah Go Reflection Terus Mendapatkan Perwakilan Jenis daripada Namanya?

Bolehkah Go Reflection Terus Mendapatkan Perwakilan Jenis daripada Namanya?

Patricia Arquette
Lepaskan: 2024-12-24 17:39:15
asal
573 orang telah melayarinya

Can Go Reflection Directly Obtain a Type's Representation from its Name?

Mendapatkan Perwakilan Jenis Secara Terus daripada Nama dalam Go melalui Refleksi

Timbul persoalan sama ada boleh menggunakan perpustakaan refleksi Go untuk memperoleh Jenis perwakilan jenis semata-mata daripada namanya. Motivasi di sebalik soalan ini terletak pada perpustakaan di mana pengguna mesti menyediakan perwakilan Jenis untuk tujuan penjanaan kod.

Pada Masa Jalan

Penukaran langsung ini tidak boleh dilaksanakan pada masa jalan menggunakan perwakilan rentetan nama jenis. Jenis yang tidak dirujuk secara eksplisit semasa penyusunan mungkin tidak terdapat dalam binari boleh laku, menjadikannya "tidak diketahui" semasa masa jalan. Rujuk "Memisahkan Kod Klien/Pelayan" untuk penjelasan yang mendalam. Penyelesaian mungkin ditemui dalam "Panggil semua fungsi dengan awalan atau akhiran khas dalam Golang."

Semasa Pengekodan

Walau bagaimanapun, semasa penulisan atau penjanaan kod sumber, adalah mungkin untuk mencapai ini tanpa mencipta pembolehubah jenis yang diberikan dan panggilan reflect.TypeOf(). Dengan bermula dengan penuding kepada jenis dan menggunakan nilai penuding nol yang ditaip, seseorang boleh menavigasi daripada deskriptor Jenis penuding ke deskriptor jenis asas menggunakan Type.Elem().

Berikut ialah contoh:

t := reflect.TypeOf((*YourType)(nil)).Elem()
Salin selepas log masuk

Deskriptor Jenis ini, yang diwakili oleh pembolehubah t, akan bersamaan dengan deskriptor t2 yang diperoleh daripada mencipta pembolehubah x daripada jenis YourType dan menerapkan reflect.TypeOf():

var x YourType
t2 := reflect.TypeOf(x)

fmt.Println(t, t2)
fmt.Println(t == t2)
Salin selepas log masuk

Output:

main.YourType main.YourType
true
Salin selepas log masuk

(Cuba di Taman Permainan Go)

Atas ialah kandungan terperinci Bolehkah Go Reflection Terus Mendapatkan Perwakilan Jenis daripada Namanya?. 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