Avatar ·

¿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!