Pendekatan Lebih Idiomatik untuk Mengekodkan []bait Slice menjadi int64 dalam Go
Dalam Go, terdapat pelbagai cara untuk mengekodkan []potongan bait ke dalam int64. Walaupun kod yang disediakan menyelesaikan tugas, ia boleh dioptimumkan untuk kelancaran idiomatik yang lebih baik.
Kod Asal:
var data int64 for i := 0; i < 8; i++ { data |= int64(mySlice[i]&byte(255)) << uint((8*8)-((i+1)*8)) }
Pendekatan Idiomatik yang Diperbaiki:
Alternatif, pendekatan yang lebih idiomatik melibatkan penggunaan peralihan bit dan gelung melalui slice:
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) }
Penjelasan:
Kod yang dipertingkatkan mengambil kesempatan daripada peralihan bit (<< dan >>) untuk melaksanakan pengekodan dengan cekap. Ia melelar melalui hirisan menggunakan sintaks julat, mengalihkan nilai data sebanyak 8 bit (<< 8) dan kemudian bitwise ORing (|) nilai bait semasa ke dalamnya. Ini secara berkesan menambahkan bait ke hujung paling kiri data tanpa menulis ganti bit sedia ada.
Kelebihan Pendekatan Idiomatik:
Atas ialah kandungan terperinci Bagaimana untuk Mengekodkan Slice []bait secara Idiomatik ke dalam int64 dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!