Pengekodan Int64 yang Cekap bagi Slices Byte dalam Go
Pertimbangkan senario berikut: anda mempunyai tatasusunan bait dan perlu mengekodnya sebagai int64 untuk pemprosesan atau penyimpanan selanjutnya. Walaupun terdapat pelbagai pendekatan untuk mencapai perkara ini dalam Go, adakah terdapat cara yang lebih idiomatik atau cekap untuk melaksanakan pengekodan ini?
Satu pendekatan biasa ialah menggelung melalui bait dan beralih secara manual serta menggabungkannya ke dalam pembolehubah int64. Walaupun kaedah ini berfungsi, ia boleh membosankan dan terdedah kepada ralat.
Pendekatan alternatif yang idiomatik dan cekap melibatkan penggunaan operator bitwise yang disediakan oleh Go. Coretan kod berikut menunjukkan pendekatan ini:
func main() { var mySlice = []byte{244, 244, 244, 244, 244, 244, 244, 244} data := int64(0) for _, b := range mySlice { data = (data << 8) | int64(b) } fmt.Printf("%d\n", data) }
Dalam contoh ini, operator anjakan kiri bitwise (<<) digunakan untuk menganjak pembolehubah data ditinggalkan sebanyak 8 bit dalam setiap lelaran. Nilai bait semasa kemudiannya ditukar kepada int64 dan bitwise ATAU (|) dengan data. Proses ini menambahkan nilai bait secara berkesan ke hujung kiri pembolehubah data, mewujudkan perwakilan int64 yang dikehendaki bagi kepingan bait.
Pendekatan ini ringkas, cekap dan sejajar dengan gaya idiomatik Go. Dengan memanfaatkan operator bitwise, ia mengurangkan keperluan untuk gelung eksplisit dan manipulasi bit manual, menjadikan kod lebih mudah dibaca dan diselenggara.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekodkan Slice Byte dengan Cekap sebagai Int64 dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!