Go中字符串迭代的结果不同

dap*_*mao -1 go

只是使用两种简单的方法来迭代Go中的字符串.第一种似乎是正确的,但第二种方式是从-97开始的减号.有人知道为什么吗?

func main() {
    str := "abc"

    for i := 0; i < len(str) ; i++ {
        println(str[i] - 'a')
    }

    for x := range str {
        println(x - 'a')
    }
}
Run Code Online (Sandbox Code Playgroud)

结果是 -

0
1
2
-97
-96
-95
Run Code Online (Sandbox Code Playgroud)

gra*_*ish 5

for x := range str {
    println(x - 'a')
}
Run Code Online (Sandbox Code Playgroud)

x包含字母的索引

你想要做的是获取范围返回的第二个值并忽略第一个值

for _, x := range str {
    println(x - 'a')
}
Run Code Online (Sandbox Code Playgroud)