Avatar ·

Qu'est-ce qu'une rune en Go et en quoi diffère-t-elle d'un byte ?

Bonjour à tous ! Je viens de commencer à étudier Go et je suis tombé sur un type de données étrange — rune. J'ai lu la documentation, mais je n'ai pas bien compris à quoi il sert. J'essaie de travailler avec des strings et de les itérer. J'ai écrit ce code : ```go package main import "fmt" func main() { s := "Привет, мир!" for i := 0; i < len(s); i++ { fmt.Printf("%c ", s[i]) } } ``` Mais au lieu des caractères attendus, j'ai obtenu un charabia : `П Ð Ð¸ в е Ñ , м и Ñ !`. Je m'attendais à voir chaque caractère de la string dans l'ordre, mais le résultat ne correspond clairement pas à ce que je voulais. Pourquoi cela se produit-il ? Ensuite, j'ai remplacé la boucle par `for i, r := range s`, et tout a fonctionné correctement. Dans la documentation, il est écrit que `r` a le type `rune`. Expliquez-moi, s'il vous plaît : 1. Qu'est-ce qu'une `rune` en termes simples ? 2. Quelle est la différence entre `byte` et `rune` ? 3. Quand faut-il utiliser `rune` et quand `byte` ? 4. Pourquoi une simple boucle avec indexation ne fonctionne-t-elle pas pour le cyrillique, alors que `range` fonctionne ? Merci d'avance !