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

时间:2017-11-14 14:18:51

标签: 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')
    }
}

结果是 -

0
1
2
-97
-96
-95

1 个答案:

答案 0 :(得分:5)

for x := range str {
    println(x - 'a')
}

x包含字母索引

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

for _, x := range str {
    println(x - 'a')
}