Avatar ·

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