用append对一个足够容量的slice 添加值后,既然都是指向同一个数组,为什么值不一样而且,只保留最后一个操作的值?

myyou · · 754 次点击
<a href="/user/zjh1315" title="@zjh1315">@zjh1315</a> <a href="/user/saberlong" title="@saberlong">@saberlong</a> 谢谢,明白了
#4
更多评论
理解slice的结构体就知道原因了。 a指向数组len为0 a1指向数组,append后, len为1,并且该位置为&#39;a&#39; b1指向数组,append后, len为1,同时修改了该位置的值为&#39;b&#39; 打印时,因为a的len为0,所以为空。a1,b1的len为1,所以打印出&#39;b&#39;
#1
也就是说,a1操作后,起始底层数组已经是{&#39;a&#39;}, 只不过a的len=0的话,a只显示长度为0的值,所以和a1,a2显示长度为1的值不同。 而a2还是在len=0的a基础上添加值得所以就修改了a1 的&#34;a&#34;为&#34;b&#34;
#2