Go语言make创建切片的五种方式
作者:liushen0528
本文主要介绍了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,预先分配容量,以较少扩容操作,提升性能。
到此这篇关于Go语言make创建切片的五种方式的文章就介绍到这了,更多相关Go语言make创建切片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!