go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 切片:数组 vs. 切⽚
Posted Locutus
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 切片:数组 vs. 切⽚相关的知识,希望对你有一定的参考价值。
- 容量是否可伸缩
数组容量不可伸缩,切片容量可以伸缩。
- 是否可以进行比较
数组之间可以比较(只要维度、长度、元素相同的两个数组,== 的值就是true)。
切片之间不可以比较(两个相同的切片也不可比较,切片只可以与nil比较)。修改一个切片就是改变指向的数组,所以其他指向这个数组的切片也会受到影响。
- 是否值类型
数组是值类型,切片是指针类型。
- 使用场景
长度已知的情况使用数组;要求容量自动增长的情况使用切片,但切片容量的自动增长会导致内存分配和数据复制,以及未来相关的GC开销。
- 数据类型统一
在声明数组和切片时,需要指定元素的数据类型。因此,两者元素的数据类型都是统一的。
如果需要元素的数据类型不一致,可以选择interface数据结构。
S5 := []interface{}{"hello", 1}
以上是关于go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 切片:数组 vs. 切⽚的主要内容,如果未能解决你的问题,请参考以下文章
go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 数组:一维数组
go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 切片:切片内部结构
go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 数组:向函数传递数组
go语言学习笔记 — 基础 — 高级数据类型 — 派生类型:指针(pointer)数据容器函数(func)结构体(struct)通道(channel)