Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Membongkar Berbilang Medan Integer dengan Cekap daripada Penampan Go Byte?
Cara Membongkar Nilai Integer dengan Cekap daripada Penampan Bait dalam Go
Mengekstrak pelbagai medan daripada aliran data binari boleh menjadi tugas biasa dalam pengaturcaraan. Dalam Go, pakej bait menyediakan kaedah untuk membaca dan memanipulasi penimbal bait.
Soalan:
Bagaimanakah kita boleh membaca dan membongkar berbilang medan integer daripada penimbal bait dalam cara yang lebih cekap, sambil mengekalkan offset medan eksplisit dan meminimumkan penimbal berlebihan peruntukan?
Jawapan:
Berikut adalah dua pendekatan:
1. Menggunakan bytes.Buffer.Next() untuk Melangkau Bait Yang Tidak Diingini:
Daripada mencipta penimbal baharu untuk setiap medan, anda boleh menggunakan kaedah bytes.Buffer.Next() untuk melangkau bait yang tidak diingini. Pendekatan ini mengelakkan peruntukan ingatan dan memperkemas proses membaca:
p := bytes.NewBuffer(buf) // ... p.Next(12) // Skip [8:20) binary.Read(p, binary.LittleEndian, &fs.sb.firstDataBlock) // ...
2. Menggunakan Struct untuk Membaca Terus Pengepala:
Kaedah ini menghapuskan keperluan untuk manipulasi penimbal berulang. Anda boleh mentakrifkan struct yang mewakili susun atur pengepala dan membaca terus daripada penimbal menggunakan binari.Read():
type Head struct { // Field definitions } var header Head err := binary.Read(file, binary.LittleEndian, &header)
Kedua-dua pendekatan menyediakan cara yang cekap dan boleh dipercayai untuk membongkar nilai integer daripada penimbal bait dalam Go, sementara memenuhi keperluan yang ditetapkan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membongkar Berbilang Medan Integer dengan Cekap daripada Penampan Go Byte?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!