【笔记】go语言--切片的操作
go语言--切片的操作
接上篇切片的概念开始
//Slice添加元素
arr := [...]int{0,1,2,3,4,5,6,7}
s1 := arr[2:6]
s2 := s1[3:5]//[5 6]
s3 := append(s2,10)//[5 6 10]
s4 := append(s3,11)//[5 6 10 11]
s5 := append(s4,12)//[ 5 6 10 11 12],其中s4和s5被分配到一个新的array中
也就是说,添加元素是如果超越了cap,则系统会重新分配更大的底层数组,如果arr还有人用的话就会存在,如果没有使用的话则会被垃圾回收机制回收掉
同时由于值传递的关系,必须接受append的返回值,一般写成s = append(s,val)
Slice的创建
//1
var s []int //go语言每个变量一旦定义都一个zero value nil,此时s=nil(可以添加元素,go语言nil也不会崩溃)
//2
s1 := []int {2,4,6,8}
//3
s2 := make([]int,16)//len和cap都是16
s3 := make([]int,10,32)// len=10, cap=32
//4
copy(s2,s1)//拷贝,des=s2,source=s3,得到[2 4 6 8 0 0 0 0 0 0 0 0 0 0 0 0],len=16,cap=16
//5
s2 = append(s2[:3], s2[4:]...)//delete,跳掉下标为3的
//6
front := s2[0]//popping from front
s2 = s2[1:]//[4 6 0 0 0 0 0 0 0 0 0 0 0 0],len=14,cap=15
//7
tail := s2[len(s2) - 1]//popping from back
s2 = s2[:len(s2) - 1]//[4 6 0 0 0 0 0 0 0 0 0 0 0],len=13,cap=15
【笔记】go语言--切片的操作的更多相关文章
- Go语言学习笔记十一: 切片(slice)
Go语言学习笔记十一: 切片(slice) 切片这个概念我是从python语言中学到的,当时感觉这个东西真的比较好用.不像java语言写起来就比较繁琐.不过我觉得未来java语法也会支持的. 定义切片 ...
- golang笔记——数组与切片
一.切片的定义 我们可以从数组(go语言中很少直接使用数组)或者切片来初始化一个新的切片,也可以直接通过 make 来初始化一个所有元素为默认零值的切片. //1.通过数组来初始化切片 arr := ...
- X-Cart 学习笔记(四)常见操作
目录 X-Cart 学习笔记(一)了解和安装X-Cart X-Cart 学习笔记(二)X-Cart框架1 X-Cart 学习笔记(三)X-Cart框架2 X-Cart 学习笔记(四)常见操作 五.常见 ...
- Java学习笔记:语言基础
Java学习笔记:语言基础 2014-1-31 最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...
- golang学习笔记16 beego orm 数据库操作
golang学习笔记16 beego orm 数据库操作 beego ORM 是一个强大的 Go 语言 ORM 框架.她的灵感主要来自 Django ORM 和 SQLAlchemy. 目前该框架仍处 ...
- golang 学习笔记 ---数组/字符串/切片
数组 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成.数组的长度是数组类型的组成部分.因为数组的长度是数组类型的一个部分,不同长度或不同类型的数据组成的数组都是不同的类 ...
- Go 语言切片是如何扩容的?
原文链接: Go 语言切片是如何扩容的? 在 Go 语言中,有一个很常用的数据结构,那就是切片(Slice). 切片是一个拥有相同类型元素的可变长度的序列,它是基于数组类型做的一层封装.它非常灵活,支 ...
- c语言文件读写操作总结
C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...
- C++语言-06-文件操作
C语言文件操作 C++语言是C语言的超集,是在C语言的基础上增加了面向对象的特性而创造出来的,最初被命名为带类的C.所以C++语言中包含了C语言的思想,如:C++语言中文件操作的原理与步骤与C语言基本 ...
- Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作
2 Mongodb CRUD 操作 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mong ...
随机推荐
- Web服务器通信原理
Web服务器通信原理 1.区分系统 2.DOS系统 3.IP地址 4.域名.DNS 5.端口 6.HTTP协议 7.Web容器 8.整个流程 一.区分系统 主要三个系统Windows.Linux.Ma ...
- django(ORM)
一 单表(增.删.改.查) 1 测试脚本 ''' 只想测试django中的某一个py文件内容,那么可以不用书写前后端交互的形式 而是直接写一个测试脚本即可 ''' # 脚本代码无论是写在应用下的tes ...
- SQL奇遇记:解锁 SQL 的秘密
数据库基础 在我们探究SQL语言之旅的起点,首先要对数据库的核心理念有所了解.数据库在现代生活中无处不在,每次网购.网页浏览.即时通讯,都在产生数据.简单来说,数据库就是按一定数据结构组织.存储.管理 ...
- Sp效率分析和理解
目录介绍 01.Sp简单介绍 1.1 Sp作用分析 1.2 案例分析思考 02.Sp初始化操作 2.1 如何获取sp 2.2 SharedPreferencesImpl构造 03.edit方法源码 0 ...
- 应急响应靶机训练-Linux1
靶机来源: 知攻善防实验室公众号 https://mp.weixin.qq.com/s/gCWGnBiwbqSnafXU1apJCA 我是在另一台主机上通过ssh连接到靶机进行解题的,以下为解题记录. ...
- springboot 在 yaml 文件中读取 pom 文件的 properties
如果没有其他配置,只能读取 yaml 文件所在模块下 和 父级模块的 pom 的 properties,以下是配置: <properties> <revision>1.0< ...
- 记录--vue3的宏到底是什么东西?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 从vue3开始vue引入了宏,比如defineProps.defineEmits等.我们每天写vue代码时都会使用到这些宏,但是你有 ...
- 鸿蒙HarmonyOS实战-ArkTS语言(状态管理)
前言 状态管理是指在应用程序中维护和更新应用程序状态的过程.在一个程序中,可能有很多不同的组件和模块,它们需要共享和相互作用的状态.如果没有一个明确的方式来管理这些状态,就会导致代码混乱.不易维护和难 ...
- CDC报错:invalid value null used for required field "null"
原因:数据库ceate_time时间字段设置为not null ,但是没有设置default值解决办法:1.修改ceate_time字段可以为null,即去掉 `create_time` dateti ...
- verilog之简单时钟信号的编写
verilog之简单时钟信号的编写 1.数字时钟信号 在数字电路中,时钟信号是重要的一类信号,一般作为激励源驱动时序电路.掌握时钟信号的编写,对于时序电路的仿真具有重要意义.所有的时序电路都需要设置时 ...