一.切片的基本介绍(slice)
(1) 切片是一个数组的引用,因此切片是引用类型,在进行传递时,遵守引用传递的机制。
(2) 切片的使用和数组类似,遍历切片、访问切片的元素和求切片长度len(slice)都一样
(3)切片的长度是可以变化的,因此切片是一个可以动态变化的数组。
(4)切片定义的基本语法:
var 变量名 []类型
比如:var a [] int

二.切片的使用
第一种方式:定义一个切片,然后让切片去引用一个创建好的数组
![]()
第二种方式:通过make来创建切片
基本语法:var 切片名 []type = make([],len,[cap])
参数说明:type:就是数据类型;len:大小;cap:指定切片容量

小结:
1.通过make方式创建切片可以指定切片的大小和容量
2.如果没有给切片的各个元素赋值,那么就会使用默认值
3.通过make方式创建切片对应的数组是由make底层维护,对外不可见, 即只能通过slice去访问各个元素
第三种方式:定义一个切片,直接就指定具体数组,使用原理类似make的方式

注意:
方式一和方式二的区别
方式一是直接引用数组,数组是事先存在的,可见
方式二是通过make来创建,make也会创建一个数组,是由切片在底层维护,是看 不见的。
三.切片的遍历
1.for循环常规方式遍历

2.for-range结构遍历切片

四.切片注意事项
1.切片初始化时 var slice = arr[start:end] 从star下标开始,到end结束,不含end
2.切片初始化时,任然不能越界。范围在[0-len(arr)]之间,但是可以动态增长。
(1)var slice = arr[0:end] 可以简写var slice = arr[0:end]
(2)var slice = arr[start:len(arr)] 可以简写为 var slice = arr[start:]
(3)var slice = arr[0:len(arr)] 可以简写为 var slice = [:]
3.cap是一个内置函数,用于统计切片的容量,即最大可以存放多少个元素。
4.切片定义完后,还不能使用,因为本身是一个空的,需要让其引用到一个数组,或者make一 个空间供切片使用
5.切片可以继续切片
6.用append内置函数,可以对切片进行动态追加

切片append操作的底层原理分析:
1.切片append操作的本质就是对数组扩容
2.go底层会创建一个新的数组newArr(安装扩容后大小)
3.将slice原来包含的元素拷贝到新的数组newArr
4.slice重新引用到newArr
5.注意newArr是在底层来维护的,程序员不可见
6.切片的拷贝操作

copy(para1,para2)参数的数据类型是切片
slice4和slice5的数据空间是独立的,相互不影响
五.string和slice
1.string底层是一个byte数组,因此string也可以进行切片处理

六.切片练习
编写一个fbn(n int)函数,可以接收n int 能够将斐波那契的数列放到切片中



















