Bagaimanakah saya boleh mendapatkan maklumat jenis pembolehubah dalam Go tanpa membuat contoh?

Susan Sarandon
Lepaskan: 2024-11-01 05:34:02
asal
766 orang telah melayarinya

How can I get the type information of a variable in Go without creating an instance?

TypeOf tanpa Instance dan Menghantar Hasil kepada Fungsi

Dalam Go, adalah mungkin untuk mendapatkan maklumat jenis pembolehubah tanpa membuat contoh jenis itu . Ini boleh dilakukan menggunakan fungsi reflect.TypeOf.

Menggunakan TypeOf tanpa Instance

Fungsi reflect.TypeOf mengambil penuding kepada jenis sebagai argumen dan mengembalikan nilai reflect.Type. Penunjuk kepada jenis boleh diperoleh menggunakan operator * diikuti dengan nama jenis. Contohnya:

<code class="go">t := reflect.TypeOf((*int)(nil))</code>
Salin selepas log masuk

Barisan kod ini mencipta penuding kepada jenis int dan memberikannya kepada pembolehubah t.

Mendapatkan Jenis Asas

Jika anda mempunyai penunjuk kepada jenis yang merupakan penunjuk kepada jenis lain, anda boleh menggunakan kaedah Elem nilai reflect.Type untuk mendapatkan jenis asas. Contohnya:

<code class="go">t = reflect.TypeOf((*http.Request)(nil)).Elem()</code>
Salin selepas log masuk

Barisan kod ini mencipta penunjuk kepada jenis http.Request dan berikannya kepada pembolehubah t. Kaedah Elem kemudian dipanggil pada nilai reflect.Type untuk mendapatkan jenis asas, iaitu http.Request.

Menggunakan Hasil dalam Fungsi

Sebaik sahaja anda mempunyai nilai reflect.Type , anda boleh menyampaikannya sebagai hujah kepada fungsi. Sebagai contoh, fungsi berikut mengambil refleksi.Taip nilai sebagai argumen dan mencetak nama jenis:

<code class="go">func printType(t reflect.Type) {
    fmt.Println(t.Name())
}</code>
Salin selepas log masuk

Fungsi ini boleh digunakan seperti berikut:

<code class="go">t := reflect.TypeOf((*int)(nil))
printType(t)</code>
Salin selepas log masuk

Ini baris kod akan mencetak rentetan "int".

Mencipta Pemalar untuk Jenis

Dalam sesetengah kes, mungkin lebih cekap untuk mencipta pemalar untuk jenis dan bukannya menggunakan reflect.TypeOf. Sebagai contoh, kod berikut mencipta pemalar untuk jenis int:

<code class="go">const TypeInt = reflect.TypeOf((*int)(nil))</code>
Salin selepas log masuk

Pemalar ini kemudiannya boleh digunakan sebagai ganti pantulan.TypeOf expression:

<code class="go">printType(TypeInt)</code>
Salin selepas log masuk

Kod ini akan cetak rentetan "int".

Atas ialah kandungan terperinci Bagaimanakah saya boleh mendapatkan maklumat jenis pembolehubah dalam Go tanpa membuat contoh?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!