本文链接: https://blog.csdn.net/lishuangquan1987/article/details/124439749
参考文章:
https://www.jianshu.com/p/cf243f1061dc
先上代码:
a := []int{1, 2, 3}
fmt.Println(&a[0])
b := append(a, 4)
fmt.Println(&b[0])
这两个输出值是一样的吗?答案 不一样:

发现就追加了一个元素,地址就变了,莫非每次追加,所有的元素都Copy一次?那性能也太低了吧
经过查询,做了如下尝试,发现不是这样的, 是我没有给初始容量:
a := make([]int, 0, 1024)
a = append(a, []int{1, 2, 3}...)
fmt.Println(&a[0])
b := append(a, 4)
fmt.Println(&b[0])

所以以后设置切片时,必要的时候要给初始容量。
评论区