golang-切片slice的创建

在创建一个新的切片是都会先创建一个长度为len的数组,并为其开辟一个cap长度为cap的额外空间,所以在cap范围类增加元素,数组的起始地址不会改变,否则会创建一个新的数组,即起始的位置发生改变

数组创建

代码

intArr:=[...]int{1,2,3,4,5,6,7,9}
//方式一指定开始和结束
s:=intArr[1:3]
//方式er指定开始和结束+容量
s:=intArr[1:3:6]

创建后的slice

[a: b :c]
a:起始位置
b:截取数据的结束位置 默认到末端)
c:截取后的容量位置 默认到末端)
len为截取的元素长度 即:(3 - 1=2)
cap为截取的起始元素到素组最后一个元素的长度 即:
(原数组长度:8 - 起始元素1=7)
底层数组: 为原数组的截取的起始元素到素组最后一个元素

golang-切片slice的创建_第1张图片

make创建

代码

s:=make([]int,10,20)

创建后的slice

len为:10
cap为:20(在创建时指定)
底层数组: 长度为10的数组

slice扩容

在cap范围内不会创建新的底层数组
超过cap则会创建新的数组 ,生成新的cap和len 超过cap也会的

你可能感兴趣的:(golang)