Itération sur des chaînes par runes dans Go
Lors de l'itération sur des chaînes dans Go, les développeurs rencontrent souvent le besoin de travailler avec des runes (code Unicode points) plutôt que des octets. En effet, le type de chaîne de Go stocke des octets, pas des runes.
Considérez l'extrait de code suivant :
for i := 0; i < len(str); i++ { dosomethingwithrune(str[i]) // takes a rune }
Cet extrait est destiné à parcourir les caractères de la chaîne str, en effectuant une action avec chaque rune. Cependant, accéder à str[i] renvoie un octet, pas une rune.
Pour parcourir les runes d'une chaîne, Go fournit une expression de plage spécifiquement à cet effet :
for pos, char := range "日本語" { fmt.Printf("character %c starts at byte position %d\n", char, pos) }
Dans dans l'exemple ci-dessus, l'expression range parcourt les runes de la chaîne, attribuant la rune actuelle à la variable char et la position actuelle de l'octet à la variable pos.
L'avantage de l'expression range est qu'elle gère UTF -8 décodage automatiquement, décomposant les points de code Unicode individuels. Cela simplifie la tâche d'itération sur les runes dans une chaîne tout en évitant les pièges potentiels de l'itération manuelle.
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!