切片比数组的方便之处在于其长度可变,在append超出cap时可自动扩容,一次性扩充大小和具体情况有关,我测试的结果是每次扩容先×2,还不够则再线性增长
关于slice有两个注意点
slice的初始化问题
1 | var arr = []int {0, 1, 2, 3, 4, 5, 6} |
注意这里s1初始化后为0, 1, 2, 3
slice这种方式初始化是左闭右开区间
slice的拷贝问题
1 | var arr = []int {0, 1, 2, 3, 4, 5, 6} |
如此初始化相当于一个引用,因此s1, s2存在内存重叠,改动s2会使s1发生改变
1 | var arr = []int {0, 1, 2, 3, 4, 5, 6} |
若如此,则为内容拷贝,不会发生改一变二的情况