Comment inverser une chaîne en Go : ordre inverse des caractères
Bonjour à tous ! Je viens de commencer à apprendre Go et j'ai rencontré une tâche simple, à première vue — inverser une chaîne. En Python, j'aurais écrit `'hello'[::-1]` et j'aurais obtenu `'olleh'`. En Go, j'ai essayé de faire ceci :
```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")) // Affiche : olleh
}
```
Avec une chaîne ASCII comme "hello", cela fonctionne. Mais quand j'ai essayé d'inverser le mot russe "привет" ou une chaîne avec un emoji, par exemple "👋Привет", j'ai obtenu un charabia complet. Pour "привет", il affiche quelque chose comme "тверип" — ça ressemble, mais ce n'est pas tout à fait correct, et pour l'emoji, ça donne des caractères illisibles.
Je comprends que le problème vient probablement de l'encodage. Go utilise UTF-8, et ma simple itération par octets ne fonctionne pas pour les caractères multi-octets. Mais comment écrire correctement une fonction d'inversion de chaîne en Go ? Faut-il convertir
No answers yet.
Connectez-vous pour laisser une réponse