Cómo invertir una cadena en Go: orden inverso de caracteres
¡Hola a todos! Acabo de empezar a estudiar Go y me encontré con una tarea simple, a primera vista: invertir una cadena. En Python escribiría `'hello'[::-1]` y obtendría `'olleh'`. En Go intenté hacerlo así:
```go
package main
import "fmt"
func reverse(s string) string {
var result string
for i := len(s) - 1; i >= 0; i-- {
result += string(s[i])
}
return result
}
func main() {
fmt.Println(reverse("hello")) // Muestra: olleh
}
```
Con una cadena ASCII como "hello" funciona. Pero cuando intenté invertir la palabra rusa "привет" o una cadena con emojis, por ejemplo "👋Привет", obtuve un galimatías completo. Para "привет" muestra algo como "тверип" — parece similar, pero no del todo correcto, y para el emoji produce caracteres extraños.
Entiendo que el problema probablemente está en la codificación. Go usa UTF-8, y mi simple iteración por bytes no funciona para caracteres multibyte. Pero, ¿cómo escribir correctamente una función de inversión de cadenas en Go? ¿Es necesario convertir