切片
Go中提供了一种灵活,功能强悍的内置类型Slices切片(“动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。
切片中有两个概念:一是len长度,二是cap容量,长度是指已经被赋过值的最大下标+1,可通过内置函数len()获得。
容量是指切片目前可容纳的最多元素个数,可通过内置函数cap()获得。切片是引用类型,因此在当传递切片时将引用同一指针,修改值将会影响其他的对象。
s := []int {1,2,3 } //直接初始化切片
s := arr[:] //用数组初始化切片
s = make([]int, 3) //make初始化,有3个元素的切片, len和cap都为3
s = make([]int, 2, 3) //make初始化,有2个元素的切片, len为2, cap为3
a = append(a, 1) // 追加1个元素
a = append(a, 1, 2, 3) // 追加多个元素, 手写解包方式
a = append(a, []int{1,2,3}...) // 追加一个切片, 切片需要解包
不过要注意的是,在容量不足的情况下,append的操作会导致重新分配内存,可能导致巨大的内存分配和复制数据代价。
a = append([]int{0}, a...) 切片头部添加元素。在开头一般都会导致内存的重新分配,而且会导致已有的元素全部复制1次。
因此,从切片的开头添加元素的性能一般要比从尾部追加元素的性能差很多。
//切片是地址传递
func updateSlice(a []int) {
a[0] = 3
}
func main() {
//切片
var a = []int{1, 2, 3}
c := make([]int, 5)
copy(c, a)
updateSlice(c)
fmt.Println(c)
}
打印
[3 2 3 0 0]
切片的内部实现
切片是一个很小的对象,它对底层的数组(内部是通过数组保存数据的)进行了抽象,并提供相关的操作方法。
切片是一个有三个字段的数据结构,这些数据结构包含 Golang 需要操作底层数组的元数据:

这 3 个字段分别是指向底层数组的指针、切片访问的元素的个数(即长度)和切片允许增长到的元素个数(即容量)。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
数据结构
+关注
关注
3文章
573浏览量
41675 -
数组
+关注
关注
1文章
420浏览量
27465 -
切片
+关注
关注
1文章
23浏览量
8635
发布评论请先 登录
相关推荐
热点推荐
如何实现一个使用V5上至少80%可用切片的设计
你好,我必须实现一个使用V5上至少80%可用切片的设计。实现它的最佳方法是什么?是否有可用的示例设计使用80%或更多的逻辑?切片数量切片LU
发表于 06-17 14:22
芯片漏电点FIB切片分析
失效分析,很多时候都需要做FIB-SEM测试,相信各位电子行业的朋友并不陌生, 大家都知道用聚焦离子束FIB切片芯片,解剖芯片内部结构 查找芯片失效点分析,再做进一步分析。今天,邵工给大家分享一下
发表于 08-05 12:11
PCB切片的分类及作用介绍
切片分析主要用于检查PCB内部走线厚度、层数,通孔孔径大小,通孔质量观察,用于检查PCBA焊点内部空洞,界面结合状况,润湿质量评价等等。切片分析是进行PCB/PCBA失效分析的重要技术
dubbo-go 中的 TPS Limit 设计与实现
则是 Dubbo 的 Go 语言实现。 最近在 dubbo-go 的 todo list 上发现,它还没有实现 TPS Limit 的模块,于是就抽空
发表于 03-17 15:27
•1014次阅读
中国移完成了DNN在内的完整切片以及多种智能终端切片设计实现方案
切片白皮书》。白皮书发布旨在汇聚产业各方资源,共商提速5G切片端到端商用推进计划,早日实现5G切片规模商用,最终实现5G产业与个人消费领域、
网络切片的分类 网络切片粒度如何选择
网络切片是一种按需组网的方式,可以让运营商在统一的基础设施上分离出多个虚拟的端到端网络,每个网络切片从无线接入网承载网再到核心网上进行逻辑隔离,以适配各种各样类型的应用。 网络切片的分类 1、独立
PCB电路板切片的分析
目的: 电路板品质的好坏、问题的发生与解决、制程改进的评估,在都需要切片做为客观检查、研究与判断的根据。切片质量的好坏,对结果的判定影响很大。 切片分析主要用于检查PCB内部走线厚
发表于 10-19 15:28
•1.2w次阅读
5G 网络切片之OTN切片和FlexE切片区别
5G 网络切片本质上是一个 E2E 概念,将用户设备连接到租户特定的应用程序。E2E 网络切片由RAN 切片、核心切片和传输切片组成。每个网
发表于 01-04 11:56
•6077次阅读
如何实现端到端网络切片?
3GPP将网络切片定义为5G 网络的主要功能之一,网络切片可看作是动态创建的逻辑端到端网络。在深入研究网络切片的概念之前,我们先简单回顾下 5G 的三大应用场景。
发表于 06-15 17:56
•2273次阅读
什么是半导体芯片的失效切片分析?
芯片切片分析技术芯片切片分析是一种在半导体、电子显微学和材料科学等领域广泛应用的技术。通过将芯片切成薄片,研究人员可以直接观察芯片内部的微观结构,如晶体管、电路布线等,从而深入研究芯片的内部
Go切片的内部实现
评论