知识卡片

切片三元组

普通读书笔记卡 · 1473

内容

切片由指向底层数组的指针、长度和容量组成,复制切片只复制这三个字段,不复制数据。它看似像值,实际保留共享底层数组的别名关系。

参考来源

- 位置:《Go语言底层原理剖析》第7章《切片使用方法与底层原理》7.1.1、7.1.4节《切片的结构》《切片值复制与数据引用》 - 结论依据:原文说明"一个切片在运行时由指针(date)、长度(len)和容量(cap)3部分构成",并指出"切片的复制其实也是值复制,但这里的值复制指对于运行时SliceHeader结构的复制……底层指针仍然指向相同的底层数据的数组地址,因此可以理解为数据进行了引用传递",因此可以推出"切片是三元组、复制只复制这三个字段而共享底层数组"的结论。 - 原始内容:一个切片在运行时由指针(date)、长度(len)和容量(cap)3部分构成。指针指向切片元素对应的底层数组元素的地址。长度对应切片中元素的数目,长度不能超过容量……在Go语言中,切片的复制其实也是值复制,但这里的值复制指对于运行时SliceHeader结构的复制……底层指针仍然指向相同的底层数据的数组地址,因此可以理解为数据进行了引用传递。