golang关于 数组、切片、append 疑问

ysu03zyy · · 2501 次点击
发完后 自己自习想了下这个问题 后面通过查看对应的取值地址,以及append函数的实现原理得到结果 **c := append(a[0:2], a[3:]...) 是 罪魁祸首** `func append(slice []Type, elems ...Type) []Type` append 函数追加的 elems 如果不超过 slice本身的长度时,就直接在 slice后面直接追加了,不会再开辟新的空间 所以, len(a) = 5 `a[0:2] = []int{0, 1}` `a[3:] = []int{3,4}` 2+2 < 5, 所以会直接进行追加 导致 a[2],a[3] = a[3],a[4] 这样的一个运算, 同时 a、c 两个会互相影响
#1