【笔记】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 ...
随机推荐
- vscode 快速切换窗口 快捷键 设置成 Alt + Q 了
vscode 切换窗口 快捷键 设置成 Alt + Q 了 又换了 换成 快速切换窗口了 quickSwitchWindow 这样方便了 我再感受下一
- jsp相对路径绝对路径
jsp相对路径绝对路径 很长一段时间纠结过JSP中的相对路径和绝对路径,也研究过一段时间,今天趁着有点时间,记下来,也有大家分享一下. 1)我们先来理解一下相对路径 首先还是我们的开始,建一个WEB项 ...
- C++ explicit 关键字简介
explicit 关键字修饰构造函数 防止类的初始化的时候进行隐式转换. class MyClass { string m_s; int m_a, m_b; public: MyClass(strin ...
- 微信小程序开发:异步处理接入的生成式图像卡通化
书接上文,我们完成了对接阿里云人像动漫化接口,现已完成的界面是这样的: 就是效果看着一般,看看效果: 然后我就在阿里云api市场转悠,就想看看还有没有什么其他奇奇怪怪的api,结果就发现了这个: ap ...
- 使用CEF(五)— 在QT中集成CEF(2)基于CLion+CMake搭建环境
在前文<使用CEF(四)- 在QT中集成CEF(1):基本集成>中,我们使用VS+QT的插件搭建了一个基于QT+CEF的项目.时过境迁,笔者目前用的最多的就是CLion+CMake搭建C/ ...
- python高级技术(进程一)
一 什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实 ...
- 记录--uni-app App端半屏连续扫码
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 本文用一个简单的 demo 讲解 App端 半屏连续扫码 的实现方式,包括(条形码.二维码等各种各样的码). 我会从实现思路讲起,如果你比 ...
- 快速上手系列:传智播客Java基础学习笔记
配置环境,把JDK的bin所在路径复制到Path,末尾加; 基本语法 一 常见的DOS命令 盘符的切换 d:回车 目录的进入 cd javase c ...
- 基于VB6的磁性移动窗体 - 开源研究系列文章
这次继续整理代码.这个磁性窗体是以前大学的时候开发的,当时模仿的Winamp的效果进行的编程.当时的时候有Windows API函数能够进行处理,但是XP的年代,那个API只是移动的虚框,而不是移动窗 ...
- springboot mybatis 多数据源整合
1.在application.properties中配置两个数据库: # db01 database spring.datasource.db01.jdbc-url=jdbc:oracle:thin: ...