Effiziente Byte-Slice-Kodierung in Go
Wie kann man mit einem idiomatischen Ansatz ein Byte-Slice in ein int64 in Go kodieren? Betrachten Sie den folgenden Codeausschnitt:
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) }
Obwohl dieser Code die Aufgabe erfüllt, gibt es eine prägnantere und elegantere Möglichkeit, das gleiche Ergebnis zu erzielen?
Idiomatische Lösung
Eine idiomatischere Möglichkeit, ein Byte-Slice in ein int64 zu kodieren, wird im Folgenden bereitgestellt Code:
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) }
In dieser Lösung verwenden wir den Bereichsoperator, um über die Elemente des Byte-Slices zu iterieren, und verwenden den bitweisen Linksverschiebungsoperator (<<), um die Werte effizient in einem zu akkumulieren int64.
Vorteile der Idiomatik Ansatz
Fazit
Während der ursprüngliche Codeausschnitt im Hinblick auf die spezifischen Bitmanipulationsoperationen möglicherweise klarer ist, ist der idiomatische Ansatz klarer prägnant, elegant und wartbar. In den meisten Fällen ist die idiomatische Lösung die bevorzugte Wahl zum Codieren eines Byte-Slices in ein int64 in Go.
Das obige ist der detaillierte Inhalt vonWie kann ich ein Byte-Slice in Go effizient in ein int64 kodieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!