数组 Array
- 定义数组的格式:
var <varName> [n]<type,n> = 0 - 数组长度也是类型的一部分,因此具有不同长度的数组为不同类型
 - 注意区分指向数组的指针和指针数组
 - 数组在Go中为值类型
 - 数组之间可以使用
==或者!=进行比较,但是不可以使用>或者< - 可以使用
new来创建数组,此方法返回一个指向数组的指针 - Go支持多维数组
 
例子
1  | func arrF1() {  | 
输出
1  | [0 0]  | 
如果字面值不够,会用0值来补充剩余的元素
索引赋值
前4个数字为0,最后一个数字为1
1  | a4 := [5]int{4: 1}  | 
输出
1  | [0 0 0 0 1]  | 
在知道具体元素的情况下,也可以不声明数组长度
1  | a5 := [...]int{1, 2, 3, 4, 5}  | 
输出
1  | [1 2 3 4 5]  | 
或者根据索引进行赋值,输出同上
1  | a6 := [...]int{0: 1, 1: 2, 2: 3, 3: 4, 4: 5}  | 
前一位为索引,后一位为值
对于a4 := [5]int{4: 1}也可以使用另外一种写法,不指定数组长度
1  | a7 := [...]int{4: 1}  | 
输出
1  | [0 0 0 0 1]  | 
指向数组的指针和指针数组
指向数组的指针
1  | a7 := [...]int{4: 1}  | 
输出
1  | &[0 0 0 0 1]  | 
即 p 指针是数组[0 0 0 0 1]的地址
指针数组
1  | x, y := 1, 2  | 
输出:
1  | [0xc00001a178 0xc00001a180]  | 
数组在Go中为值类型
在其他语言中,数组为引用类型,在Go中为值类型,当函数中数组参数时
1  | func test(arr1){  | 
数组比较
数组类型要相同,长度一样
1  | a9 := [...]int{1, 2}  | 
输出
1  | false  | 
new 关键字
1  | p2 := new([10]int)  | 
输出
1  | &[0 0 0 0 0 0 0 0 0 0]  | 
指向数组的指针。
都可以使用下标的方式去修改数组
1  | a := [10]int{}  | 
输出
1  | [0 2 0 0 0 0 0 0 0 0]  | 
多维数组
1  | func arrF2() {  | 
输出
1  | [[1 1 1] [2 2 2]]  | 
索引赋值
1  | func arrF2() {  | 
输出
1  | [[0 3 0] [4 0 0]]  | 
但是与一维不同的是,不能用[...]
冒泡排序
1  | func popF(){  |