Golang 中 range 的使用方法及注意事项

一、用法

range 类似迭代器,可以遍历数组,字符串,map 等等,对象的不同,返回的结果也不同。

结果:

二、注意事项

1. range 会复制对象,而不是不是直接在原对象上操作。

示例一:

示例二:

2. 使用 range 迭代遍历引用类型时,底层的数据不会被复制:

结果:

因为切片的内部结构为 struct slice{*point, len, cap} 。

数据部分是一个指针,指向地址,复制对象的时候只是把指针的值复制了,而不是重新拷贝一块新的内存再把值放进去,所以修改的时候还是修改的原来的值,和 C++里的浅拷贝一样。

发表评论