for range的使用注意事项
(一)
1.在range中修改切片:
1 n := []int{1,2,3,4,5,6} 2 for i, e := range n{ 3 if i == len(n)-1 { 4 n[0] += e 5 } else { 6 n[i+1] += e 7 } 8 9 } 10 fmt.Println("n:", n)
输出:
n: [22 3 6 10 15 21]
2.在range中修改属组:
1 n := [...]int{1,2,3,4,5,6} 2 for i, e := range n{ 3 if i == len(n)-1 { 4 n[0] += e 5 } else { 6 n[i+1] += e 7 } 8 9 } 10 fmt.Println("n:", n)
输出:
n: [7 3 5 7 9 11]
range
表达式会在for
语句开始执行时被求值一次。求值的结果值被传递出来,是值传递(复制)。由于切片是引用类型,所以可以跟随变化。
(二)
func str() { a := "你好123" for i, v := range a { fmt.Println("i:",i, ", v:", v) } b := []rune(a) fmt.Println("b:", b) }
输出:
i: 0 , v: 20320 i: 3 , v: 22909 i: 6 , v: 49 i: 7 , v: 50 i: 8 , v: 51 b: [20320 22909 49 50 51]