数组和切片
数组array
- 可以存放多个同一类型数据
- 数组是种数据类型,数组是值类型
- 数组的地址和数组中第一个元素的地址相同
- 第二个元素的地址 = 第一个元素的地址 + 这个数组类型占用的字节数(int:8,int32:4)
- 数组中的地址是连续的,通过数组名来进行获取&intArr
1 | package main |
数组使用
下标从0开始,3种初始化方式
1 | var numArray [3]int{1,3,4} |
for- range
遍历方式
1 | package main |
数组注意事项
- 数组是多个相同类型的组合,长度是固定的,不能动态变化
- 数组中的元素可以是任何数据类型,但是不能混用
- 数组定义之后没有赋值,则默认是零值
- 数值类型:0
- 字符串:""
- bool数组:false
- 数组是值类型,默认是值传递,因此会进行值拷贝。数组间不会相互影响
- 长度是数组的一部分,在传递参数的时候需要考虑数组的长度
1 | package main |
数组案例
1 | package main |
数组反转
随机生成5个数,进行反转输出
1 | package main |
slice基础
- 切片包含长度和容量
- 切片是数组的引用,是引用传递
- 切片的长度是变化的,切片是动态的数组
- 切片从底层来说,就是一个数据结构
struct
1 | var 变量名 []类型 |
1 | package main |
切片初始化
- 通过创建好的数组来定义切片,这个数组是事先存在的,程序是可见的。
- 通过
make
来初始化切片var sliceName []type=make([], len,[cap])
。make
会创建一个切片,也会创建一个数组,这个数组在底层是由切片进行维护的。程序员不可见。- 长度必须指定
- 容量是可选的,如果不指定默认是长度值
- 如果不给切片的各个元素赋值,就会使用默认值
1 | func main(){ |
- 创建切片的时候直接指定
1 | func main(){ |
切片遍历
1 | package main |
append
- 对切片进行动态追加到末尾,自动扩容
- 切片中追加切片必须带上
…
1 | // 追加元素到切片中 |
copy
1 | package main |