type
status
date
slug
summary
tags
category
icon
password
Go 语言的 range 表达式遵循如下两个规则:
- range表达式只会在for语句开始执行时被求值一次,无论后边会有多少次迭代
- range表达式的求值结果会被复制,也就是说,被迭代的对象是range表达式结果值的副本而不是原值
在使用 range 遍历数组和切片遇到需要修改遍历对象本身的情况时,便会出现差异。
遍历数组
打印结果为:
[7 3 5 7 9 11]
。range 循环中 e 并未随着数组改变,因为数组是值类型的。
遍历切片
打印结果为:
[22 3 6 10 15 21]
。range 循环中 e 并会随着数组改变而改变,因为切片是引用类型的。