U盘PE| w764位旗舰版下载 | U盘装win7系统 | U盘启动 |win7pe | win10下载 |加入收藏土豆PE官网U盘PE,U盘装win7系统,win7pe,U盘启动,U盘装系统,w764位旗舰版下载站!
当前位置:主页 > 帮助中心 > 土豆PE使用教程 >

Go slice切片详解和实战(2) make append copy

来源:http://www.tudoupe.com时间:2022-02-27

回顾

上一篇文章我们介绍了切片slice的定义初始化、引用类型特征、如何使用数组切割成切片。 编程学习资料点击免费领取

这篇文章介绍切片的生成make()、切片的追加append()、切片的复制copy()。对知识点进行详细介绍和应用实战。

加深理解

  1. 切片的本质:切片的本质是一个框,框住了一块连续的内存
  2. 切片属于引用类型,真正的数据都是保存在底层数组里的
  3. 切片可以简单理解为是快捷方式,修改会互相影响
  4. 判断一个切片是否为空,使用len(s) == 0 判断,不能使用 s==nil 判断

生成切片 make

上需求:请定义一个长度为5,容量为10的整型切片。

上代码:

打印结果:

分析:make()函数的第一个参数指定切片的数组类型,第二个参数指定切片的长度,第三个参数指定切片的容量。

更好的理解长度和容量

打印结果:

分析: 我们可以发现定义切片时元素的个数和长度相关,因为长度就是元素的个数。

容量我们在下面介绍append()时,重点介绍一下。

切片引用类型实战

上代码

打印结果:

分析:通过上面的打印结果我们可以很直观的看出来,切片引用类型的本质,当切片修改时会互相影响;而数组作为值类型,不会互相影响。

切片的遍历

和数组一样,用fori或者for range进行遍历即可。

append

首先,我们定义一个切片

打印结果:

分析:我们发现切片的长度和容量都是4

然后,我们使用append()函数追加一个元素

打印结果:

分析:长度由4变成5,我们很好理解;容量为什么会从4变成8呢?

这是Go语言对切片的自动扩容机制。append()追加元素,原来的底层数据容量不够时,go底层会把底层数组替换,是go语言的一套扩容策略

我后面会单独写一篇来讲自动扩容策略是如何实现的。欢迎大家持续关注我的专栏

多次追加

多次追加的概念很好理解,就是多次调用append()

举个栗子:

打印结果:

分析: s1经过两次append追加元素,赋值给了s2

追加多个元素

当我们需要追加多个元素时,难道只能像上面这样多次调用append吗?

当然不是的。

举个栗子:

打印结果:

注意:append的第二个参数,我们传入了一个切片,需要在切片后写死...,表示将切片切割,将切片的值作为追加到第一个参数中的元素。

复制切片

下面演示两种方式:

打印结果:都返回[1 2 3]

注意:make和:=不能同时使用,这种是错误的写法 :s3 := make([]int, 5)

聪明的小伙伴们是不是提出疑问了呢?

既然结果一样,为什么要引出copy这个函数呢?

咱们接着往下看,就知道所以然了。

打印结果:

分析: 我们发现s1和s2是[11 2 3] s3是[1 2 3],说明copy方法是复制了一份,开辟了新的内存空间,不再引用s1的内存地址,这就是两者的区别。

删除元素

注意:删除切片中的元素 不能直接删除 可以组合使用分割+append的方式删除切片中的元素

举个栗子:比如切除s3中的元素2(下标为1的元素)

打印结果:

注意:上面代码段中有我添加的注释:append()函数中第一个切片不用拆开,原因是一个作为被接受的一方,是把后面的元素追加到第一个切片中。

数组转切片

打印结果:

实战演练

猜想一下下面程序的运行结果:

.

.

.

打印结果:

分析: 我们静下心来逐步推导就ok了:

  1. s1 := make([]int, 5, 10) 生成的是切片: [0 0 0 0 0]
  2. for循环中每次将自增的i值追加到上面的切片中
  3. 所以最终打印的结果是:[0 0 0 0 0 0 1 2 3 4 5 6 7 8 9]

总结

这篇文章汇总了使用make生成切片、使用append追加切片元素、使用copy复制切片,开辟新的内存空间、使用切片分割和append来删除切片。

最后

感谢阅读,欢迎大家三连:点赞、收藏、投币(关注)!!!

①3000多本Python电子书有
②Python开发环境安装教程有
③Python400集自学视频有
④软件开发常用词汇有
⑤Python学习路线图有
⑥项目源码案例分享有

如果你用得到的话可以直接拿走,在我的QQ技术交流群里(技术交流和资源共享,广告勿入)可以自助拿走,群号是895937462。

Copyright © 2012-2014 Www.tudoupe.Com. 土豆启动 版权所有 意见建议:tdsky@tudoupe.com

土豆系统,土豆PE,win7系统下载,win7 64位旗舰版下载,u盘启动,u盘装系统,win10下载,win10正式版下载,win10 RTM正式版下载,win8下载,电脑蓝屏,IE11修复,网络受限,4K对齐,双系统,隐藏分区,系统安装不了,U盘装系统,笔记本装系统,台式机装系统,diskgenius运用,GHSOT装系统,U盘修复,U盘技巧,U盘速度,U盘不能格式化,U盘复制发生错误,U盘加密,U盘选购,开机黑屏,蓝屏,进不了系统,上不了网,打不开程序,点击无反应,系统设置,PE个性化,PE添加网络,PE维护系统

点击这里给我发消息