Go 切片(slice)使用
Go 切片(slice)使用
切片是对数组的一个连续片段的引用,所以切片是一个引用类型。切片本身不拥有任何数据,它们只是对现有数组的引用,每个切片值都会将数组作为其底层的数据结构;slice的语法与数组很像,只是没有固定的长度而已
切片的创建
使用 [ ]Type可以创建一个代用Type类型的切片
func test04() {//声明一个整型切片var numList []intfmt.Println(numList)//声明一个空切片var numListEmpty = []int{}fmt.Println(numListEmpty) }
可以使用make函数构造一个切片,格式为make([]Type,size,cap)
//指针:是指向第一个切片元素对应的底层数组元素的地址。(切片的一个元素不一定是数组中的第一个元素) //长度:切片中的元素个数 //容量:从切片的开始位置到底层数据的结尾位置 list :=make([]int,5,5) fmt.Println(list)
可以 以一个数组的某个片段创建一个切片
func test05() {arr := []string{"风之极-刮痧", "焰分-赤浪尺", "八极崩", "第九魂技", "菊花残-满地伤"}slice1 := arr[1:3]fmt.Println(slice1) //打印:[焰分-赤浪尺 八极崩](取到索引为1和2,就是开始可以取到,结尾取不到)fmt.Println(arr) //打印:[风之极-刮痧 焰分-赤浪尺 八极崩 第九魂技 菊花残-满地伤] }
切片的使用
func emptySlice() {var numList []intfmt.Println(numList==nil)//truefmt.Println(len(numList)==0)//true 判断切片是否为空 }func modifySlice() {arr := [...]string{"风之极-刮痧", "焰分-赤浪尺", "八极崩", "第九魂技", "菊花残-满地伤", "神罗万象"}s := arr[:]fmt.Println(arr)fmt.Println(s)fmt.Println("---------修改第一个元素之后--------")s[0] = "西漳"fmt.Println(arr)fmt.Println(s)/**打印结果:[风之极-刮痧 焰分-赤浪尺 八极崩 第九魂技 菊花残-满地伤 神罗万象][风之极-刮痧 焰分-赤浪尺 八极崩 第九魂技 菊花残-满地伤 神罗万象]---------修改第一个元素之后--------[西漳 焰分-赤浪尺 八极崩 第九魂技 菊花残-满地伤 神罗万象][西漳 焰分-赤浪尺 八极崩 第九魂技 菊花残-满地伤 神罗万象]*/ }func appendSliceData() {s := []string{"张三"}fmt.Println(cap(s))//追加一个元素s = append(s, "焰分-赤浪尺")fmt.Println(cap(s))//追加两个元素s = append(s, "八极崩 第九魂技", "菊花残-满地伤")fmt.Println(cap(s))//追加一个切片s = append(s, []string{"风之极-刮痧", "焰分-赤浪尺"}...)fmt.Println(cap(s))//切片容量每次会扩大原来的两倍fmt.Println(s) /**1248*///[张三 焰分-赤浪尺 八极崩 第九魂技 菊花残-满地伤 风之极-刮痧 焰分-赤浪尺] }
切片的长度和容量
一个切片slice由三个部分构成:指针、长度、容量;指针指向第一个slice元素对应的底层数组元素的地址,要注意的是slice的一个元素并不一定就是数组的第一个个元素;长度对应的slice中元素的数目,长度不能超过容量,容量一般是从slice的开始位置到底层数据的结尾位置。简单的讲,容量就是从创建切片索引开始的底层数组中的元素个数,而长度是切片中的元素个数。
内置的len和cap 函数分别是slice的长度和容量
Go 切片(slice)使用相关推荐
- 切片slice(python)
切片slice 作用:从容器中取出相应的元素重新组成一个容器. 语法:容器[(开始索引):(结束索引)(:(步长))] 小括号()括起的部分代表可省略 说明: 结束索引不包含该位置元素 步长是切片每次 ...
- 位置2的索引超出数组范围不能超过10_golang学习笔记--切片slice 与数组 arr
因为我是写php的,刚开始写go的时候老是被数组坑.因为在go中的数组是固定长度,所以会存在越界的时候.而在go中也很少直接使用数组.更多的时候会使用slice(切片). 数组 数组是一个由固定长度的 ...
- 切片 go 去除第一个_golang学习笔记--切片slice 与数组 arr
因为我是写php的,刚开始写go的时候老是被数组坑.因为在go中的数组是固定长度,所以会存在越界的时候.而在go中也很少直接使用数组.更多的时候会使用slice(切片). 数组 数组是一个由固定长度的 ...
- 【Go】Go 语言切片(Slice)
文章目录 一.切片 二.声明切片 方法1 方法2 总结:创建切片的各种方式 三.切片初始化 1. 声明的同时初始化 2. 用数组初始化切片 3. 切片的内存布局: 读写操作实际目标是底层数组,只需注意 ...
- Go开发 之 容器(数组Array、切片slice、映射map、列表list)
文章目录 0.唠唠叨叨 1.数组-Array 1.1.什么是数组 1.1.1.数组的声明 1.1.2.比较两个数组是否相等 1.1.3.示例 1.1.3.1.通过索引下标访问元素 1.1.3.2.数组 ...
- 在pythonnumpy中切片(slice)
转载自:博客 在python&numpy中切片(slice) 上文说到了,词频的统计在数据挖掘中使用的频率很高,而切片的操作同样是如此.在从文本文件或数据库中读取数据后,需要对数据进行预处理的 ...
- 字符串切片slice操作(字符串)
切片slice操作可以让我们快速的提取子字符串,标准格式为: [起始偏移量start:终止偏移量end:步长step] 典型操作: 操作和说明 示例 结果 [:] 提取整个字符串 "abcd ...
- Golang 入门 : 切片(slice)
切片(slice)是 Golang 中一种比较特殊的数据结构,这种数据结构更便于使用和管理数据集合.切片是围绕动态数组的概念构建的,可以按需自动增长和缩小.切片的动态增长是通过内置函数 append( ...
- Golang如何遍历切片slice
前言 这两天用golang开发一个把企业微信的打卡记录同步到HR-OA系统的一个中间表的功能,同步时把从企业微信接口里查询到的打卡记录放到一个对象的切片里,然后遍历切片把每条打卡记录写到中间表,这里涉 ...
- go数组Array和切片Slice全面简述理解
小聊:本文是小白刚学习 golang 时候的总结,在基本学习了解之上的特性比较与讨论,go的数组有什么不同?切片又有什么好处?怎么去区分它们的使用?外加一些知识的拓展,有利于加深对 go 的 Arra ...
最新文章
- 无法向会话状态服务器发出会话状态请求
- 《众妙之门——自由网站设计师成功之道》一1.4 自由网站设计师犯的严重错误...
- 常见的几种最优化方法
- python安装后无法运行任何软件_为啥我按照python安装教程,总说无法启动此程序,因为计算机中丢失?...
- 实验7-3-4 字符串替换 (15分)
- 辅助类BinaryTreeNodeLeftChildRightSibling(左孩子右兄弟,二叉树结点)
- 【DP】花店橱窗布置 (ssl 1626/luogu 1854)
- 【C语言进阶深度学习记录】三十五 程序中的堆、栈以及静态存储区(数据区)
- 网易被曝暴力裁患绝症员工,回应:存在不近人情的地方,向前同事道歉
- 感觉Swagger功能不够强大?knife4j这款神器了解一下....
- android 崩溃捕获框架,DefenseCrash
- 架构师速成6.4-开发框架
- LeetCode-21.合并两个有序链表(链表+递归)
- 程序员书单_java专项进阶篇
- php字符串里含有全角符号,php半角转全角字符函数
- Unicode 汉字编码表
- 【数据分析】数据分析在电商精准营销及效果评估中的应用
- OBJ文件解析之OBJ的整体结构
- Google 正式开源 Paranoid
- 给UI/UX设计师推荐5个国外网站