以下所有内容均能够在b站观看,如果你爱看视频的同学能够到b站观看本章内容,或一系列的视频教程。
https://www.bilibili.com/vide…
Go 语言切片(Slice)
Go 数组的长度不可扭转,在特定场景中这样的汇合就不太实用,Go 中提供了一种灵便,性能强悍的内置类型切片(“动静数组”),与数组相比切片的长度是不固定的,能够追加元素,在追加时可能使切片的容量增大。
切面是建设在数组的根底上的,要有切片得先有数组。它的内部结构蕴含了 地址 、长度、和容量。切片个别用于疾速地操作一块数据汇合。切片属于援用类型。
值类型和援用类型
咱们在创立一个数组的时候。会在内容空间生成一个内存地址。当咱们要一个数组赋值给另一个数组的时候其实是在内存空间里开拓了一块新的内存空间。而咱们的切片却同一块数组的空间内存数据汇合块。
定义
var 变量名 []类型
var 变量名 [...]类型...
切片的长度和容量
什么事长度,其实和数组相似,也就是领有多少个元素,就是咱们的长度。那么容量是咱们的这个切片的最大接受的长度。
打个比方,比方咱们的杯子。能装多少水是它的容量。装了多少水是它的长度。
{0,1,2,3,4,5,6,7}8 - 0
咱们在开发过程要应用切片必须建设在数组之上,那有没有不必数组的形式来创立咱们的切片呢?答案是有的就是咱们的或应用 make() 函数来创立切片:
var slice1 []type = make([]type, len)
也能够简写为
slice1 := make([]type, len)
make([]T, length, capacity)
append() 和 copy() 函数
这两个函数是go给我操作切片的一些函数。
视频外面有演示,这里就不多讲了 一个是用来给append进行追加元素的。一个是来copy新的切片,内存地址的指向也会产生扭转。