for-range

题目:

下面这段代码能否正常结束?

1
2
3
4
5
6
func main() {
v := []int{1, 2, 3}
for i := range v {
v = append(v, i)
}
}

答案解析:

​ for-range 遍历切片,在底层实现的时候,会先将该切片进行浅拷贝,拷贝到 temp(假设),然后遍历的时候遍历这个 temp,故后续加入切片的元素不会被遍历到,因此不会出现死循环,能正常结束。


for-range
http://example.com/2023/08/05/Go每日一题/for-range2/
作者
Feng Tao
发布于
2023年8月5日
更新于
2023年8月5日
许可协议