Go 中的高效位元組切片編碼
如何使用慣用的方法將位元組切片編碼為 Go 中的 int64?考慮以下程式碼片段:
import "fmt" func main() { var mySlice = []byte{244, 244, 244, 244, 244, 244, 244, 244} var data int64 for i := 0; i < 8; i++ { data |= int64(mySlice[i] & byte(255)) << uint((8*8)-((i+1)*8)) } fmt.Println(data) }
雖然此程式碼完成了任務,但是否有更簡潔、更優雅的方法來實現相同的結果?
慣用解
下面提供了將位元組切片編碼為int64 的更慣用的方法代碼:
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) }
在此解決方案中,我們利用範圍運算子迭代位元組切片的元素,並使用位元左移運算子(
慣用語的優點方法
結論
雖然原始程式碼片段在具體的位元操作方面可能更清晰操作上,慣用的做法更加簡潔、優雅、可維護。對於大多數情況,慣用的解決方案是在 Go 中將位元組切片編碼為 int64 的首選。
以上是如何在 Go 中有效地將位元組切片編碼為 int64?的詳細內容。更多資訊請關注PHP中文網其他相關文章!