一、用法
range类似迭代器,可以遍历数组,字符串,map等等,对象的不同,返回的结果也不同。
1 | package main |
结果:
1 | 0 1 |
二、注意事项
1. range会复制对象,而不是不是直接在原对象上操作。
示例一:
1 | package main |
示例二:
1 | package main |
2. 使用range迭代遍历引用类型时,底层的数据不会被复制:
1 | package main |
结果:
1 | [1 200 300] |
因为切片的内部结构为struct slice{*point, len, cap}。
数据部分是一个指针,指向地址,复制对象的时候只是把指针的值复制了,而不是重新拷贝一块新的内存再把值放进去,所以修改的时候还是修改的原来的值,和C++里的浅拷贝一样。