Maison >développement back-end >Golang >Comment encoder idiomatiquement une tranche []byte dans un int64 dans Go ?
Une approche plus idiomatique pour encoder un []byte Slice dans un int64 dans Go
Dans Go, il existe différentes façons d'encoder un []byte slice dans un int64. Bien que le code fourni accomplisse la tâche, il peut être optimisé pour une plus grande maîtrise idiomatique.
Code original :
var data int64 for i := 0; i < 8; i++ { data |= int64(mySlice[i]&byte(255)) << uint((8*8)-((i+1)*8)) }
Approche idiomatique améliorée :
Une approche alternative, plus idiomatique, consiste à utiliser le décalage de bits et la boucle à travers le 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) }
Explication :
Le code amélioré profite du décalage de bits (<< et >>) pour effectuer l'encodage efficacement. Il parcourt la tranche en utilisant la syntaxe de plage, en décalant la valeur des données de 8 bits (<< 8), puis en effectuant un OU au niveau du bit (|) la valeur d'octet actuelle. Cela ajoute efficacement les octets à l'extrémité la plus à gauche des données sans écraser les bits existants.
Avantages de l'approche idiomatique :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!