2017-11-14 24 views
-1

Goの文字列を繰り返し処理する単純な方法を2つ使用しました。最初のものは正しいようですが、2番目の方法は-97で始まるマイナスの数字になっています。なぜ誰かが知っているだろうか?Goの文字列反復の結果が異なります

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 
+3

「range」は最初にインデックスを返します。 https://golang.org/ref/spec#For_range – JimB

答えて

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

xはあなたが何をしたいの手紙

のインデックスが範囲によって返された第2の値を取り、最初は無視している含まれています

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

迅速な回答ありがとうございます! – dapangmao

関連する問題