nil切片 和 空切片
nil切片是只声明但未初始化,没有分配底层数组的内存空间,
空切片是初始化了的,有分配数组内存,只是数组内没有元素。
二者都可以正常扩容、遍历。不会报错。
append 如何添加切片
append 可以增加切片,通过在切片后面加上...,就可以进行添加。
![](https://i-blog.csdnimg.cn/direct/364f512df6454f36bba93bd0caf5db3e.png)
如何比较两个切片是否相等,判断依据是什么
判断依据:1. 切片长度; 2. 切片指向数组的所有元素
只要两个切片的长度相等并且指向数组内所有元素及顺序都相等,那么两个切片就相等。两个数组可以不是同一个数组。
判断函数:
-
reflect.DeepEqual()
-
自定义函数
使用[a:b]对切片进行截取
使用[a:b]对切片进行截取得到的新切片,新切片的长度是b-a ,容量是底层数组长度-a。新切片与旧切片共用一个底层数组