Avatar ·

Comment obtenir un caractère d'une chaîne par index en Go ? (Problème avec les runes et les bytes)

Bonjour à tous ! Je suis débutant en Go et j'ai rencontré un problème inattendu en travaillant avec les chaînes. J'ai besoin d'obtenir un caractère d'une chaîne par son index, comme j'ai l'habitude de le faire dans d'autres langages (par exemple, `str[i]` en Python ou `charAt(i)` en Java). Voici mon code : ```go package main import "fmt" func main() { str := "Привет, мир!" fmt.Println(str[0]) // Affiche 208, pas 'П' fmt.Println(string(str[0])) // Affiche 'Ð', pas 'П' } ``` Je m'attendais à ce que `str[0]` me renvoie le premier caractère 'П', mais au lieu de cela, j'obtiens des nombres et des symboles étranges. Pourquoi cela se produit-il ? Comment obtenir correctement un caractère par index en Go ? J'ai essayé d'utiliser `string(str[0])`, mais cela ne fonctionne pas non plus correctement. C'est particulièrement étrange que pour les lettres anglaises (par exemple, "Hello"), tout fonctionne normalement, mais avec les caractères russes, les problèmes commencent. Veuillez expliquer comment indexer correctement les caractères dans les chaînes Go. Qu'est-ce que je fais de mal ? Existe-t-il une méthode standard pour obtenir un caractère par index ?