O que é rune em Go e como difere de byte?
Olá a todos! Comecei a estudar Go e me deparei com um tipo de dados estranho — rune. Li a documentação, mas não entendi completamente para que ele serve.
Estou tentando trabalhar com strings e iterar sobre elas. Escrevi este código:
```go
package main
import "fmt"
func main() {
s := "Привет, мир!"
for i := 0; i < len(s); i++ {
fmt.Printf("%c ", s[i])
}
}
```
Mas, em vez dos caracteres esperados, obtive uma bagunça: `П Ð Ð¸ в е Ñ , м и Ñ !`. Eu esperava ver cada caractere da string em ordem, mas a saída claramente não corresponde ao que eu queria. Por que isso acontece?
Depois, substituí o loop por `for i, r := range s`, e tudo funcionou corretamente. Na documentação, diz que `r` é do tipo `rune`.
Expliquem, por favor:
1. O que é `rune` em termos simples?
2. Qual é a diferença entre `byte` e `rune`?
3. Quando devo usar `rune` e quando `byte`?
4. Por que o loop simples com indexação não funciona para cirílico, mas `range` funciona?
Agradeço desde já!
No answers yet.
Faça login para deixar uma resposta
Blogs