如何在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中正确编写字符串反转函数?是否需要转换?
```