Maison >développement back-end >Golang >Pourquoi l'indexation de chaînes dans Go ne renvoie-t-elle pas toujours le caractère attendu ?
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]) }
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
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
Exemple avec des caractères Unicode
Considérez ce qui suit exemple :
fmt.Println(string([]rune("Hello, 世界")[8])) // UTF-8
Cela affichera "界", qui est le point de code Unicode pour le caractère chinois "monde".
Ressources supplémentaires
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!