添加元素重新开辟空间与否取决初始化切片的方式,似乎这是bug?大伙速速进来看下!

anko · · 1074 次点击
在遍历的时候,修改被遍历元素,本身就是一种危险操作,容易导致一些未预期的错误,测试测试可以,写代码这样写,估计会被后面的维护者打死
#1
更多评论
我只是为了探究go的特性才这样写的,很少这样写,但是不排除会这样写!特别是重复操作很多时候我觉得这样写也没事吧!
#2
说到底,基础太差. slice有原地址扩容这种说法? 其底层存储结构是数组,当cap不足时,就会新建一个数组存储. 使用9 append的时候,cap不变,9替换了原数组位置的值. 遍历的时候,之所以数据没有变化,因为遍历的是变量的一个拷贝. slice 结构 { len,cap,array地址 } 所以当myint的地址改变时,其遍历的还是原来的数组,因此你得到的结果是: 1 10 9 4 5
#3