Maison > développement back-end > Golang > Go Strings : itération rune vs octet : quand dois-je utiliser lequel ?

Go Strings : itération rune vs octet : quand dois-je utiliser lequel ?

DDD
Libérer: 2024-12-16 13:39:11
original
438 Les gens l'ont consulté

Go Strings: Rune vs. Byte Iteration: When Should I Use Which?

Comprendre la différence entre les runes et les octets dans les chaînes en Go

Lors de l'itération sur une chaîne dans Go à l'aide de la clause range, vous pouvez Rencontrez deux types de données : rune et octet. Cela peut prêter à confusion, alors examinons en détail pourquoi cela se produit.

Selon la définition du langage Go, les chaînes sont des séquences d'octets et leurs éléments individuels sont accessibles par leur index à l'aide de str[index] . Cependant, lorsque vous parcourez une chaîne en utilisant for range, les caractères récupérés sont de type rune.

Cette distinction découle de la définition de la clause range, qui permet une itération sur les points de code (caractères Unicode) dans la chaîne . Chaque point de code se compose d'un ou plusieurs octets, en fonction du codage du caractère. La clause range parcourt les octets de début de ces points de code, fournissant la valeur runique correspondante comme deuxième élément du tuple.

Si vous rencontrez une séquence UTF-8 non valide pendant l'itération, la deuxième valeur sera la Caractère de remplacement Unicode (0xFFFD), et l'itérateur avancera d'un octet.

Pour parcourir les octets individuels d'une chaîne, vous pouvez utiliser ce qui suit alternatives :

  1. Bouclage manuel d'octets :

    for i := 0; i < len(s); i++ {
        // Access the byte at position i in "s"
    }
    Copier après la connexion
  2. Conversion en tranche d'octets :

    for i, b := range []byte(s) {
        // Access both the index (i) and the byte (b)
    }
    Copier après la connexion

Tout en s'étendant sur octets d'une chaîne est moins concis, il donne accès aux valeurs brutes des octets, ce qui peut être nécessaire dans certains scénarios. En comprenant la distinction entre la plage de runes et la plage d'octets, vous pouvez manipuler efficacement les chaînes dans Go pour répondre aux exigences souhaitées.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal