Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Dapatkan `Reflection.Jenis` Jenis Antara Muka yang Mendasari Primitif dalam Go?

Bagaimanakah Saya Boleh Dapatkan `Reflection.Jenis` Jenis Antara Muka yang Mendasari Primitif dalam Go?

Barbara Streisand
Lepaskan: 2024-12-24 06:45:31
asal
886 orang telah melayarinya

How Can I Retrieve the `reflect.Kind` of an Interface Type Underlying a Primitive in Go?

Retrieve Reflect.Jenis untuk Jenis Berdasarkan Primitif: Penjelasan Terperinci

Selalunya, pembangun menghadapi keperluan untuk menentukan refleksi.Jenis jenis yang mempunyai pelaksanaan asas berdasarkan jenis primitif, seperti sebagai:

type ID interface {
    myid()
}

type id string

func (id) myid() {}
Salin selepas log masuk

Dalam contoh di atas, jenis "id" melaksanakan antara muka "ID" menggunakan rentetan asas primitif. Cabarannya terletak pada mendapatkan semula pantulan.Nilai antara muka dan bukannya pantulan lalai.Jenis rentetan.

Menyingkap Penyelesaian: Penunjuk ke Antara Muka

Salah tanggapan yang biasa adalah untuk lulus nilai jenis "id" untuk mencerminkan.TypeOf(). Walau bagaimanapun, ini menghasilkan pembungkusan semula tersirat nilai ke dalam antara muka{} dengan rentetan tertanam primitif.

Kunci untuk mengatasi halangan ini ialah memanfaatkan penuding ke antara muka. Dengan menghantar penuding, deskriptor jenis membalut antara muka{}, menghalang pembungkusan semula. Selepas itu, kita boleh menggunakan Type.Elem() untuk mendapatkan semula deskriptor jenis antara muka runcing, yang akan mencerminkan sifat antara muka jenis dengan tepat.

id := ID(id("test"))

t := reflect.TypeOf(&id).Elem()

fmt.Println(t.Kind()) // Output: interface
Salin selepas log masuk

Pendekatan ini mendedahkan refleksi yang diingini dengan berkesan. Jenis antara muka untuk jenis berakar pada primitif.

Cerapan Tambahan: Penunjuk ke Antara Muka Faedah

Teknik ini bukan sahaja menyelesaikan masalah awal tetapi juga menyerlahkan faedah menggunakan penunjuk ke antara muka. Dalam kes tertentu, seperti menghantar nilai kepada fungsi yang menjangkakan jenis tertentu (cth., Rentetan atau Masa), penunjuk ke antara muka boleh berfaedah untuk mengelakkan penukaran tersirat.

Dengan mengikut garis panduan ini, pembangun boleh dengan tepat dapatkan semula refleksi.Jenis jenis yang berasal daripada primitif, memperoleh pemahaman yang lebih mendalam tentang keupayaan refleksi Go.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan `Reflection.Jenis` Jenis Antara Muka yang Mendasari Primitif dalam Go?. 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