Dalam Go, kepingan ialah rujukan kepada tatasusunan asas dan pengepalanya mengandungi maklumat penting tentang kepingan itu. Walaupun kandungan hujah keping boleh diubah suai oleh fungsi, pengepalanya tidak boleh. Untuk memeriksa pengepala kepingan, kita boleh menyelidiki butiran yang tersembunyi dalam strukturnya.
Pengepala kepingan ditakrifkan oleh jenis reflect.SliceHeader, yang terdiri daripada tiga medan: Data, Len dan Cap. Kita boleh menukar penuding hirisan kepada *reflect.SliceHeader menggunakan pakej yang tidak selamat:
sh := (*reflect.SliceHeader)(unsafe.Pointer(&newSlice2))
Setelah kita mempunyai pengepala hirisan, kita boleh mengakses medannya secara langsung:
Dengan mencetak nilai SliceHeader menggunakan fmt.Printf(% v, sh), kita mendapat output berikut:
&{Data:1792106 Len:8 Cap:246}
Ini memberitahu kami bahawa newSlice2 menunjuk kepada data yang disimpan pada alamat memori 1792106, mempunyai panjang 8, dan mempunyai kapasiti 246.
Untuk membuat kesimpulan, sementara pengepala kepingan tidak boleh diubah suai secara langsung, kita boleh memeriksa kandungannya menggunakan teknik seperti menukar kepada mencerminkan. SliceHeader atau menggunakan kaedah tidak langsung seperti &newSlice2[0] atau len(newSlice2) untuk mendapatkan semula tertentu medan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memeriksa Pengepala Go Slice?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!