2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Go 学习笔记(63)— Go 中的 for ... range 对切片和数组的差异

Go 学习笔记(63)— Go 中的 for ... range 对切片和数组的差异

时间:2020-10-05 18:10:28

相关推荐

Go 学习笔记(63)— Go 中的 for ... range 对切片和数组的差异

1. 迭代对象是切片,迭代过程中修改切片

package mainimport "fmt"func main() {// 示例1。numbers1 := []int{1, 2, 3, 4, 5, 6}// 只有一个迭代变量时,i 表示为迭代对应元素的索引值for i := range numbers1 {if i == 3 {numbers1[i] |= i}}fmt.Println(numbers1) // [1 2 3 7 5 6]fmt.Println()}

注意:numbers3 为切片

package mainimport "fmt"func main() {numbers3 := []int{1, 2, 3, 4, 5, 6}maxIndex3 := len(numbers3) - 1for i, e := range numbers3 {if i == maxIndex3 {numbers3[0] += e} else {numbers3[i+1] += e}}fmt.Println(numbers3) // [22 3 6 10 15 21]}

2. 迭代对象是数组,迭代过程中修改数组

注意:numbers2 为数组

package mainimport "fmt"func main() {numbers2 := [...]int{1, 2, 3, 4, 5, 6}maxIndex2 := len(numbers2) - 1for i, e := range numbers2 {if i == maxIndex2 {numbers2[0] += e} else {numbers2[i+1] += e}}fmt.Println(numbers2) // [7 3 5 7 9 11]fmt.Println()}

注意两点:

range表达式只会在for语句开始执行时被求值一次,无论后边会有多少次迭代;range表达式的求值结果会被复制,也就是说,被迭代的对象是rrange表达式结果值的副本而不是原值;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。