Maison >développement back-end >Golang >Go Strings : Rune vs. Byte : quelle est la différence lors de la sélection et de l'indexation ?
Rangement de plage et d'octets sur des chaînes
Dans Go, les comportements de déplacement sur une chaîne et d'accès à des caractères individuels diffèrent considérablement. Lors d'un déplacement sur une chaîne, les valeurs obtenues sont de type rune, représentant des points de code Unicode. A l’inverse, l’accès aux caractères par index (str[index]) renvoie des valeurs de type byte. Comprendre cette distinction est crucial.
Selon la définition du type de données Go string, une chaîne est une séquence d'octets avec une longueur immuable. Les éléments d'une chaîne sont accessibles à l'aide d'indices entiers. Ceci est cohérent avec le comportement des caractères d'indexation, où chaque élément représente un seul octet.
En revanche, la clause range dans les boucles for permet d'itérer sur différents types de données, y compris les chaînes. Dans le cas de chaînes, for range parcourt les points de code Unicode de la chaîne, en commençant par le premier octet. Chaque itération donne l'index du premier octet du point de code actuel sous forme d'entier et le point de code lui-même sous forme de rune. Ce comportement est spécifié dans la spécification du langage de programmation Go.
Si vous souhaitez spécifiquement parcourir des octets individuels d'une chaîne, vous pouvez utiliser une boucle for régulière avec un index entier ou convertir la chaîne en tranche d'octets ( []byte) en utilisant la conversion []byte(s).
Pour résumer, parcourir des chaînes dans Go renvoie des points de code Unicode (type rune), tandis que l'accès à des caractères individuels par index renvoie des octets individuels. Cette distinction est ancrée dans la définition du type de données chaîne et dans le comportement de la clause range pour les chaînes. Comprendre cette différence est essentiel pour une manipulation efficace des données de chaîne dans Go.
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!