go语言基础之切片的创建和截取
1、切片的创建
示例:
package main //必须有个main包
import "fmt"
func main() {
//切片和数组的区别
//数组[]里面的长度时固定的一个常量, 数组不能修改长度, len和cap永远都是5
a := [5]int{}
fmt.Printf("len = %d, cap = %d\n", len(a), cap(a))
//切片, []里面为空,或者为...,切片的长度或容量可以不固定
s := []int{}
fmt.Printf("1: len = %d, cap = %d\n", len(s), cap(s))
s = append(s, 11) //给切片末尾追加一个成员
fmt.Printf("append: len = %d, cap = %d\n", len(s), cap(s))
}
执行结果:
len = 5, cap = 5
1: len = 0, cap = 0
append: len = 1, cap = 1
2、切片的截取
切片语法:
|
操作 |
含义 |
|
s[n] |
切片s中索引位置为n的项 |
|
s[:] |
从切片s的索引位置0到len(s)-1处所获得的切片 |
|
s[low:] |
从切片s的索引位置low到len(s)-1处所获得的切片 |
|
s[:high] |
从切片s的索引位置0到high处所获得的切片,len=high |
|
s[low:high] |
从切片s的索引位置low到high处所获得的切片,len=high-low |
|
s[low:high:max] |
从切片s的索引位置low到high处所获得的切片,len=high-low,cap=max-low |
|
len(s) |
切片s的长度,总是<=cap(s) |
|
cap(s) |
切片s的容量,总是>=len(s) |
示例:
package main //必须有个main包
import "fmt"
func main() {
array := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
//[low:high:max] 取下标从low开始的元素, len=high-low, cap=max-low
s1 := array[:] //[0:len(array):len(array)] 不指定容量和长度一样
fmt.Println("s1 = ", s1)
fmt.Printf("len = %d, cap = %d\n", len(s1), cap(s1))
//操作某个元素,和数组操作方式一样
data := array[1]
fmt.Println("data = ", data)
s2 := array[3:6:7] //a[3], a[4], a[5] len = 6-3=3 cap = 7-3=4
fmt.Println("s2 = ", s2)
fmt.Printf("len = %d, cap = %d\n", len(s2), cap(s2))
s3 := array[:6] //从0开始,去6个元素,容量也是6, 常用
fmt.Println("s3 = ", s3)
fmt.Printf("len = %d, cap = %d\n", len(s3), cap(s3))
s4 := array[3:] //从下标为3开始,到结尾
fmt.Println("s4 = ", s4) //[3 4 5 6 7 8 9]
fmt.Printf("len = %d, cap = %d\n", len(s4), cap(s4))
}
执行结果:
s1 = [0 1 2 3 4 5 6 7 8 9]
len = 10, cap = 10
data = 1
s2 = [3 4 5]
len = 3, cap = 4
s3 = [0 1 2 3 4 5]
len = 6, cap = 10
s4 = [3 4 5 6 7 8 9]
len = 7, cap = 7
go语言基础之切片的创建和截取的更多相关文章
- Go语言基础之切片
Go语言基础之切片 本文主要介绍Go语言中切片(slice)及它的基本使用. 引子 因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性. 例如: func arraySum(x ...
- GO学习-(9) Go语言基础之切片
Go语言基础之切片 本文主要介绍Go语言中切片(slice)及它的基本使用. 引子 因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性. 例如: func arraySum(x ...
- 2.4 Go语言基础之切片
本文主要介绍Go语言中切片(slice)及它的基本使用. 一.引子 因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性. 例如: func arraySum(x [3]int) ...
- go语言基础之切片做函数参数
1.切片做函数参数 (备注:用了冒泡排序) 示例: package main //必须有个main包 import "fmt" import "math/rand&quo ...
- SQL语言基础及数据库的创建
一.数据类型:1.二进制数据二进制数据以十六进制形式存储.二进制数据最多能存8000个英文字符,4000个汉字字符. 2.字符数据char:存100,不足100补足.varcha:存多少占多少. 3. ...
- go语言基础之切片和底层数组关系
1.切片和底层数组关系 示例: package main //必须有个main包 import "fmt" func main() { a := []int{0, 1, 2, 3, ...
- Go语言基础之5--数组(array)和切片(slince)
一.数组(array) 1.1 数组定义 1)含义: 数组是同一类型的元素集合. 数组是具有固定长度并拥有零个或者多个相同数据类型元素的序列. 2)定义一个数组的方法: var 变量名[len] ty ...
- Go语言基础(一)
Go语言基础(一) 国庆体验一下大名鼎鼎的Go语言,IDE使用IEDA+Go插件,边敲代码边体会,感觉Go语言好酷 一.Hello World 和Java类似,go文件需要一个package包含,代码 ...
- JavaScript 引入方式 语言规范 语言基础 数据类型 常用方法 数组 if_else 比较运算符 for while 函数 函数的全局变量和局部变量 {Javascript学习}
Javascript学习 JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript ...
随机推荐
- Android Studio奇技淫巧
No1: Ctrl+E:显示最近浏览过的文件 Ctrl+Shift+E:显示最近编辑过的文件 Ctrl+Tab:切换最近编辑过的文件 No2: 条件断点:断点右键 No3: 全局断点 这样只要碰到空指 ...
- 在静态方法中应用spring注入的类
最近在一次项目的重构中,原项目需要在静态方法中调用service,现在需要更换框架,service需要自动注入,无法再静态方法中调用 解决思路: 创建一个当前类的静态变量,创建一个方法,使用@Post ...
- 《Playing hard exploration games by watching YouTube》论文解读
论文链接 油管链接 一.摘要 当环境奖励特别稀疏的时候,强化学习方法通常很难训练(traditionally struggle).一个有效的方式是通过人类示范者(human demonstrato ...
- shell 变量中间有空格 如何传入整个变量
parmfile='abc 123' RunProgram programname "${parmfile}" -->传入abc 123 RunProgram progr ...
- Kubernetes网络模型概念
Kubernetes网络模型 Kubernetes网络模型设计的一个基础原则是:每个Pod都拥有一个独立的IP地址,而且假定所有Pod都在一个可以直接连通的.扁平的网络空间中.所以不管它们是否运行在同 ...
- ThinkPHP连接sqlserver,错误11001
错误代码如下: :( 11001:[Microsoft][ODBC Driver 11 for SQL Server]TCP Provider: 不知道这样的主机. 0:[Microsoft][ODB ...
- [Luogu5106]dkw的lcm
https://minamoto.blog.luogu.org/solution-p5106 容易想到枚举质因子及其次数计算其贡献,容斥计算$\varphi(p^i)$的次方数. #include&l ...
- 如何成为一名优秀的CTO(首席技术官)
最近我发现很多开发人员都表示不知道如何规划职业生涯的下一个步骤.基于我们目前所处的科技泡沫现象,很多工程师都倾向于留在大型的成熟公司,或者要么a)去初创企业工作要么b)自己搞初创公司. 回顾我自己的职 ...
- BZOJ3522&4543 [POI2014]Hotel加强版 长链剖分
上上周见fc爷用长链剖分秒题 于是偷偷学一学 3522的数据范围很小 可以暴力枚举每个点作为根节点来dp 复杂度$O(n^2)$ 考虑令$f[x][j]$表示以$x$为根的子树内距离$x$为$j$的点 ...
- 使用ViewPager实现android软件使用向导的功能
现在的大部分android软件,都是使用说明,就是第一次使用该软件时,会出现向导,可以左右滑动,然后就进入应用的主界面了. 先看下效果图: 首先需要一个布局文件,是FlameLayout组成的,里面包 ...