本文从四个维度,分析一下 slice和array 之间的区别
- 值长度
- array 固定长度,使用前必须声明长度
arr := [5]int
- slice 不定长,添加元素时,有len长度和cap容量二个属性 。创建时不需要指定长度
- 传递值
- array 进行赋值或者作为函数参数,实际上整个数据都会被重新拷贝一份
- slice 属于引用类型,指向底层的数组array的数据结构,传值与赋值时,传递的是指针
- 添加值
- array 添加值的时候,不能超过其声明时的长度
- slice 支持不断在尾部添加值。当长度超过cap后,将触发扩容
- 修改值
- 修改array某个下标的值,不会影响其它变量
- 修改slice某个下标的值,可能会修改到其它变量