0
点赞
收藏
分享

微信扫一扫

Go语言make创建切片的五种方式


一、创建指定长度切片

创建指定长度的slice,元素初始化为零值,适用于知道长度且需要预先分配空间场景,代码示例如下:

s1 := make([]int, 5)

s2 := make([]string, 5)

此时创建的slice的容量于指定长度一致,当使用append追加数据超过容量时,底层自动扩容。

二、创建预分配容量切片

创建slice时指定长度以及容量,底层数组预留扩展空间,适用于会频繁append操作的场景,代码示例如下:

s3 := make([]string, 5, 10)

三、创建零长度空切片

创建一个长度为0但是不为nil的slice,适用于需要返回空切片但避免nil判断场景,代码示例如下:

s4 := make([]string, 0)

四、创建带容量的空切片

创建一个长度为0容量为256的slice,适用于接收大量数据的缓冲区场景,代码示例如下:

s5 := make([]string, 0, 256)

五、创建匿名结构体切片

创建匿名结构体slice,让编译器根据上下文自动推断元素类型,适用于临时数据存储场景,代码示例如下:

s6 := make([]struct{}, 2)

六、创建方式对比

创建方式

长度

容量

底层数组

典型用途

make([]T, n)

n

n

已分配

固定长度集合

make([]T, n, m)

n

m

已分配

可扩展集合

make([]T, 0)

0

0

未分配

空集合占位符

make([]T, 0, cap)

0

cap

已分配

预分配缓冲区

make([]struct{}, n)

n

n

已分配

轻量级占位结构

建议优先使用make([]T, n, m)进行创建slice,预先分配容量,以较少扩容操作,提升性能。

举报

相关推荐

0 条评论