知识卡片
容量限制增长边界
内容
切片容量表示从起点到底层数组末尾可增长的元素数,append 超过容量会分配新数组。发散:理解容量,才能预测 append 是否会共享原数组。这个边界是[[切片是三字段视图]]里容量字段的直接体现,也解释了[[切片共享底层数组]]为何会在 append 后失效。
参考来源
- 位置:《Go语言实战》第4章《数组、切片和映射》(源文件:_epub-src/OEBPS/Text/part0014.xhtml)
- 结论依据:原文围绕“长度和容量的区别”给出定义、机制、流程、对比或限制条件,本卡片据此提炼可迁移的 Go 语言/工程结论,并补充边界或实践启发。
- 原始内容:内部实现:底层数组 这3个字段分别是指向底层数组的指针、切片访问的元素的个数(即长度)和切片允许增长到的元素个数(即容量)。后面会进一步讲解长度和容量的区别。 4.2.2 创建和初始化 Go语言中有几种方法可以创建和初始化切片。是否能提前知道切片需要的容量通常会决定要如何创建切片。 1.make和切……