Avatar ·

如何在Go中反转字符串:字符逆序

```html 大家好!我刚开始学习Go,遇到了一个看似简单的任务——反转字符串。在Python中,我会写 `'hello'[::-1]` 并得到 `'olleh'`。在Go中,我尝试这样做: ```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")) // 输出:olleh } ``` 对于像"hello"这样的ASCII字符串,这有效。但当我尝试反转俄语单词"привет"或包含emoji的字符串,例如"👋Привет"时,我得到了完全乱码。对于"привет",输出类似于"тверип"——看起来相似,但不完全正确,而对于emoji,则完全是乱码。 我明白问题很可能出在编码上。Go使用UTF-8,我简单的按字节迭代不适用于多字节字符。但如何在Go中正确编写字符串反转函数?是否需要转换? ```