Rumah >pembangunan bahagian belakang >Golang >Salin bait ke dalam medan struct menggunakan refleksi
Pengenalan strawberi editor PHP: Dalam pengaturcaraan, kadangkala kita perlu menyalin data bait ke dalam medan struktur. Proses ini boleh dicapai dengan menggunakan refleksi. Refleksi ialah alat yang berkuasa untuk memeriksa dan memanipulasi struktur kod semasa runtime. Melalui refleksi, kita boleh mendapatkan maklumat medan struktur dan menyalin data bait ke dalam struktur mengikut jenis dan susunan medan untuk merealisasikan penukaran dan penugasan data. Pendekatan ini boleh memberi kami kemudahan dan fleksibiliti, membolehkan kami memproses data bait dengan lebih cekap.
Bagaimana untuk mengulang hirisan bait dan menetapkannya ke medan struct?
type s struct { f1 []byte f2 []byte f3 []byte } func S s { x := s{} x.f1 = make([]byte, 4) x.f1 = make([]byte, 2) x.f1 = make([]byte, 2) return x } func main() { data := []byte{83, 117, 110, 83, 0, 1, 0, 65} Z := S() //pesudo code from here i:= 0 for field in Z { field = data[i:len(field)] i += len(field) }
Harapan:
Saya pernah melakukan ini sebelum ini dalam c/c++ tetapi saya tidak tahu bagaimana untuk melakukannya secara berterusan. Saya memerlukan fungsi peruntukan generik kerana saya akan mempunyai beberapa struktur yang berbeza, beberapa daripadanya mungkin tidak wujud dalam aliran.
Sebaik-baiknya saya ingin lulus struct yang dimulakan dan kod saya akan mengisi medan struct mereka secara berulang.
Gunakan kod pantulan dalam pakej binari/pengekodan.
Langkah 1: Isytiharkan medan sebagai tatasusunan dan bukannya hirisan.
type s struct { f1 [4]byte f2 [2]byte f3 [2]byte }
Langkah 2: Gunakan binary.read untuk menyahkod data ke dalam struktur p>
var s s data := []byte{83, 117, 110, 83, 0, 1, 0, 65} err := binary.read(bytes.newreader(data), binary.littleendian, &s) if err != nil { log.fatal(err) }
Langkah 3: Selesai!
fmt.Print(s) // prints {[83 117 110 83] [0 1] [0 65]}
https://www.php.cn/link/42ae1544956fbe6e09242e6cd752444c
Atas ialah kandungan terperinci Salin bait ke dalam medan struct menggunakan refleksi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!