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

myyou · · 754 次点击
看一下这个https://studygolang.com/articles/10924
#3
更多评论
理解slice的结构体就知道原因了。 a指向数组len为0 a1指向数组,append后, len为1,并且该位置为'a' b1指向数组,append后, len为1,同时修改了该位置的值为'b' 打印时,因为a的len为0,所以为空。a1,b1的len为1,所以打印出'b'
#1
也就是说,a1操作后,起始底层数组已经是{'a'}, 只不过a的len=0的话,a只显示长度为0的值,所以和a1,a2显示长度为1的值不同。 而a2还是在len=0的a基础上添加值得所以就修改了a1 的"a"为"b"
#2