Avatar ·

如何在Go中通过索引获取字符串字符?(rune和byte的问题)

```html 大家好!我是Go新手,在处理字符串时遇到了一个意想不到的问题。我需要通过索引获取字符串中的字符,就像我在其他语言中习惯做的那样(例如Python中的`str[i]`或Java中的`charAt(i)`)。 这是我的代码: ```go package main import "fmt" func main() { str := "Привет, мир!" fmt.Println(str[0]) // 输出208,而不是'П' fmt.Println(string(str[0])) // 输出'Ð',而不是'П' } ``` 我期望`str[0]`返回第一个字符'П',但相反,我得到了一些奇怪的数字和字符。为什么会这样?如何在Go中正确通过索引获取字符? 我尝试过使用`string(str[0])`,但这也不能正常工作。特别奇怪的是,对于英文字母(例如"Hello"),一切正常,但遇到俄文字符时就开始出现问题。 请解释如何正确索引Go字符串中的字符。我做错了什么?有没有标准的方法通过索引获取字符? ```