¿Qué es un rune en Go y en qué se diferencia de byte?
¡Hola a todos! Acabo de empezar a estudiar Go y me topé con un tipo de datos extraño: rune. Leí la documentación, pero no terminé de entender para qué sirve.
Estoy intentando trabajar con strings e iterar sobre ellos. Escribí este código:
```go
package main
import "fmt"
func main() {
s := "Привет, мир!"
for i := 0; i < len(s); i++ {
fmt.Printf("%c ", s[i])
}
}
```
Pero en lugar de los caracteres esperados, obtuve una mezcla rara: `П Ð Ð¸ в е Ñ , м и Ñ !`. Esperaba ver cada carácter de la cadena en orden, pero la salida claramente no corresponde a lo que quería. ¿Por qué sucede esto?
Luego reemplacé el bucle con `for i, r := range s`, y todo funcionó correctamente. En la documentación dice que `r` es de tipo `rune`.
Expliquen, por favor:
1. ¿Qué es `rune` en palabras simples?
2. ¿Cuál es la diferencia entre `byte` y `rune`?
3. ¿Cuándo se debe usar `rune` y cuándo `byte`?
4. ¿Por qué el bucle simple con indexación no funciona para cirílico, pero `range` sí?
¡Gracias de antemano!