Maison > développement back-end > Golang > Pourquoi l'indexation de chaînes dans Go ne renvoie-t-elle pas toujours le caractère attendu ?

Pourquoi l'indexation de chaînes dans Go ne renvoie-t-elle pas toujours le caractère attendu ?

Barbara Streisand
Libérer: 2024-12-14 16:18:14
original
658 Les gens l'ont consulté

Why Doesn't String Indexing in Go Always Return the Expected Character?

Indexation des caractères dans les chaînes Golang

Pour récupérer les caractères d'une chaîne, vous utilisez des opérations d'indexation. Cependant, vous pouvez rencontrer des cas où la valeur indexée ne correspond pas au caractère attendu. Par exemple, dans le code ci-dessous :

package main

import "fmt"

func main() {
    fmt.Print("HELLO"[1])
}
Copier après la connexion

La sortie est 69 au lieu de la lettre "E".

Comprendre l'encodage de chaînes Golang

Golang utilise le codage UTF-8 pour les chaînes littérales. Les caractères ASCII, y compris la lettre « E », occupent un seul octet. Cependant, les caractères Unicode plus grands peuvent être représentés par plusieurs octets.

Utiliser des runes pour l'indexation des caractères

Pour indexer correctement les caractères, utilisez des runes : des entiers représentant des points de code Unicode. Une rune est le type sous-jacent des caractères en UTF-8. Vous pouvez convertir un octet en rune à l'aide de la fonction rune().

Conversion d'octets en caractères

Pour convertir un octet en son caractère correspondant, vous pouvez utiliser le Fonction string() :

fmt.Println(string("Hello"[1])) // ASCII only
Copier après la connexion

Cette approche fonctionne bien pour l'ASCII caractères.

Conversion de runes en caractères

Pour les caractères Unicode, vous pouvez convertir une rune en caractère à l'aide de la tranche []rune() :

fmt.Println(string([]rune("Hello, 世界")[1])) // UTF-8
Copier après la connexion

Exemple avec des caractères Unicode

Considérez ce qui suit exemple :

fmt.Println(string([]rune("Hello, 世界")[8])) // UTF-8
Copier après la connexion

Cela affichera "界", qui est le point de code Unicode pour le caractère chinois "monde".

Ressources supplémentaires

  • [Aller à la section Spécification du langage de programmation sur Conversions](https://golang.org/ref/spec#Conversions)
  • [Le blog Go : chaînes, octets, runes et caractères dans Go](https://blog.golang.org/strings -octets-runes-et-personnages-en-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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal