Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah saya boleh mendapatkan maklumat jenis pembolehubah dalam Go tanpa membuat contoh?
Dalam Go, adalah mungkin untuk mendapatkan maklumat jenis pembolehubah tanpa membuat contoh jenis itu . Ini boleh dilakukan menggunakan fungsi reflect.TypeOf.
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.
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.
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".
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!