- 容量是否可伸缩
数组容量不可伸缩,切片容量可以伸缩。
- 是否可以进行比较
数组之间可以比较(只要维度、长度、元素相同的两个数组,== 的值就是true)。
切片之间不可以比较(两个相同的切片也不可比较,切片只可以与nil比较)。修改一个切片就是改变指向的数组,所以其他指向这个数组的切片也会受到影响。
- 是否值类型
数组是值类型,切片是指针类型。
- 使用场景
长度已知的情况使用数组;要求容量自动增长的情况使用切片,但切片容量的自动增长会导致内存分配和数据复制,以及未来相关的GC开销。
- 数据类型统一
在声明数组和切片时,需要指定元素的数据类型。因此,两者元素的数据类型都是统一的。
如果需要元素的数据类型不一致,可以选择interface数据结构。
S5 := []interface{}{"hello", 1}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)