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 !
No answers yet.
Connectez-vous pour laisser une réponse