Maison >développement back-end >Golang >Pourquoi le déplacement sur une chaîne dans Go renvoie-t-il des runes, alors que l'indexation renvoie des octets ?

Pourquoi le déplacement sur une chaîne dans Go renvoie-t-il des runes, alors que l'indexation renvoie des octets ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-27 20:12:32657parcourir

Why Does Ranging Over a String in Go Return Runes, While Indexing Returns Bytes?

Pourquoi Range Over String renvoie des runes, octet par index

Selon la documentation Go et nos propres tests, lors d'une plage sur une chaîne, les éléments obtenus sont de type rune, alors que l'indexation dans la chaîne à l'aide de str[index] donne des octets.

Le La raison principale de cette distinction découle de la définition du type de chaîne. Une chaîne représente une séquence d'octets, et l'accès à des octets individuels est possible via l'indexation.

D'autre part, la clause range est utilisée dans le for. instruction, elle permet de parcourir les points de code Unicode dans une chaîne. À partir d’un index de 0 octet, l’itération renverra le premier octet d’index de chaque point de code codé UTF-8 et la valeur du point de code correspondante (type rune).

Si vous souhaitez parcourir les octets de la chaîne au lieu des points de code, il existe quelques options :

  • Utilisez une boucle for régulière pour parcourir les indices de 0 à lentille(s)-1 .
  • Utilisez for i, b := range []byte(s) pour convertir la chaîne en tranche d'octets, puis parcourez les octets.

Ces alternatives offrent un accès direct aux octets sans sacrifier la lisibilité du code.

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!

Déclaration:
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