您好,登录后才能下订单哦!
这篇文章主要讲解了“如何理解Go语言的切片”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解Go语言的切片”吧!
一、定义切片
1、声明一个未指定大小的数组来定义切片
2、使用make()函数来创建切片
二、切片是可索引的
1、len() 和 cap() 函数
三、切片截取
四、增加切片的容量
说明:
Go 语言切片是对数组的抽象。
Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。
注意:切片不需要说明长度
var identifier []type //例如 var slice []int
var slice1 []type = make([]type, len) //也可以简写为 slice1 := make([]type, len) //例如 slice := make([]type, len)
可以由 len()
方法获取长度。
切片提供了计算容量的方法 cap()
可以测量切片最长可以达到多少
package main import "fmt" func main(){ var number = make([]int,3,5) fmt.Printf("len=%d cap=%d slice=%v\n",len(number),cap(number),number) } //len=3 cap=5 slice=[0 0 0]
2、空(nil)切片
一个切片在未初始化之前默认为 nil,长度为 0
package main import "fmt" func main(){ var number []int fmt.Printf("len=%d cap=%d slice=%v\n",len(number),cap(number),number) } //len=0 cap=0 slice=[]
可以通过设置下限及上限来设置截取切片 [lower-bound:upper-bound]
package main import "fmt" func main() { //创建切片 number := []int{0, 1, 2, 3, 4, 5, 6, 7, 8} printSlice(number) //打印原始切片 fmt.Println("number == ", number) //打印子切片从索引1到索引4 fmt.Println("number == ", number[1:4]) //打印子切片默认下限 fmt.Println("number == ", number[:3]) //打印子切片默认上限 fmt.Println("number == ", number[4:]) } func printSlice(x []int) { fmt.Printf("len=%d cap=%d slice=%v\n", len(x), cap(x), x) }
结果:
原理:创建一个新的更大的切片并把原分片的内容都拷贝过来
append() 和 copy() 函数 package main import ( "fmt" ) func main() { //创建切片 var number []int printSlice(number) //允许追加空切片 number = append(number,0) printSlice(number) //向切片添加一个元素 number = append(number,1) printSlice(number) //同时添加多个元素 number = append(number,2,3,4) printSlice(number) //创建的新的切片是之前的切片容量的两倍 number1 := make([]int,len(number),(cap(number))*2) //拷贝number的内容到number1中 copy(number1,number) printSlice(number1) } func printSlice(x []int) { fmt.Printf("len=%d cap=%d slice=%v\n", len(x), cap(x), x) }
感谢各位的阅读,以上就是“如何理解Go语言的切片”的内容了,经过本文的学习后,相信大家对如何理解Go语言的切片这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。