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)

go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 切片:数组 vs. 切⽚

go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 切片:切片的初始化声明