Extracción de subcadenas en Go: ¿cómo obtener una parte de la cadena por índices?
¡Hola! Acabo de empezar a aprender Go y me encontré con un problema al trabajar con strings. En otros lenguajes (como Python o JavaScript), estoy acostumbrado a hacer algo como `str[1:4]` para obtener una subcadena. En Go probé una sintaxis similar, pero no obtuve lo que esperaba.
Aquí está mi código:
```go
package main
import "fmt"
func main() {
str := "Привет, мир!"
sub := str[1:4]
fmt.Println(sub) // Espero: "рив", pero obtengo algo extraño
}
```
En lugar de "рив", veo algunos caracteres rotos. Leí que Go usa UTF-8, pero no entiendo cómo esto afecta la extracción de subcadenas. También probé con una string ASCII:
```go
str := "Hello, World!"
sub := str[1:4]
fmt.Println(sub) // Muestra "ell" — ¡esto funciona!
```
¿Por qué surgen problemas con el cirílico? ¿Cómo extraer correctamente subcadenas de strings que contienen caracteres Unicode (letras rusas, emojis, etc.)? Necesito una forma confiable que funcione para cualquier string. ¡Gracias de antemano!