Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh mendapatkan maklumat jenis pembolehubah dalam Go tanpa membuat contoh?

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

Susan Sarandon
Susan Sarandonasal
2024-11-01 05:34:02838semak imbas

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>

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>

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>

Fungsi ini boleh digunakan seperti berikut:

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

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>

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

<code class="go">printType(TypeInt)</code>

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!

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