Avatar ·

在Go中提取子字符串:如何按索引获取字符串的一部分?

```html 你好!我刚开始学习Go,在处理字符串时遇到了问题。在其他语言(如Python或JavaScript)中,我习惯用类似 `str[1:4]` 的方式来获取子字符串。在Go中,我尝试了类似的语法,但得到的结果并非预期。 这是我的代码: ```go package main import "fmt" func main() { str := "Привет, мир!" sub := str[1:4] fmt.Println(sub) // 期望:"рив",但得到了一些奇怪的东西 } ``` 我看到的不是 "рив",而是一些乱码字符。我了解到Go使用UTF-8,但不明白这如何影响子字符串的提取。我也尝试了处理ASCII字符串: ```go str := "Hello, World!" sub := str[1:4] fmt.Println(sub) // 输出 "ell" —— 这能正常工作! ``` 为什么西里尔字母会出现问题?如何正确地从包含Unicode字符(俄文字母、emoji等)的字符串中提取子字符串?我需要一个可靠的方法,适用于任何字符串。提前感谢! ```