Avatar ·

Como obter um caractere de uma string por índice em Go? (Problema com runas e bytes)

Olá a todos! Sou novo em Go e me deparei com um problema inesperado ao trabalhar com strings. Preciso obter um caractere de uma string pelo seu índice, como estou acostumado a fazer em outras linguagens (por exemplo, `str[i]` em Python ou `charAt(i)` em Java). Aqui está meu código: ```go package main import "fmt" func main() { str := "Привет, мир!" fmt.Println(str[0]) // Exibe 208, não 'П' fmt.Println(string(str[0])) // Exibe 'Ð', não 'П' } ``` Eu esperava que `str[0]` retornasse o primeiro caractere 'П', mas em vez disso recebo números e caracteres estranhos. Por que isso acontece? Como obter corretamente um caractere por índice em Go? Tentei usar `string(str[0])`, mas também não funciona corretamente. É especialmente estranho que para letras inglesas (por exemplo, "Hello") tudo funciona normalmente, mas com caracteres russos começam os problemas. Por favor, explique como indexar corretamente caracteres em strings Go. O que estou fazendo de errado? Existe alguma maneira padrão de obter um caractere por índice que funcione?