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?