首先说说写法
推荐简短写法:
var name(数组的名字) = [3](索引的长度) int(数组类型) {1,2,3}(索引的值)
var nam = [...] int {1,2,3,4}([]里面的...会根据索引的大小来判断长度)
数组在刚开始就定死了,不可更改,在编译的时候就决定了
如果你觉得每次写[3]int麻烦,你也可以自己定义一个类型
type name2 [3]int 然后这个name2就成了一个新的类型
var name name2 新的写法 [3]里面的3可以随便定义
初始化索引
name: =name2{1,2,3}
如果你想获取第二个索引为3,你可以这样写:
name: = name2{2:3}
数组比较
举个例子:
a:=[2]int{1,2}//定义了一个名字为a的数组
b:=[...]int{1,2}//定义了一个名字为b的数组
c:=[2]int{1,3}//定义了一个名字为c的数组
d:=[3]int{1,2,3}//定义了一个名字为d的数组
Println(a==b,b==c,a==c,c==d)
输出的结果为true,false,false,false
因为a和b 里面的索引的长度一样,并且索引的值也一样;b和c因为索引的值不一样,所以输出false;最后一个会导致编译错误,因为两个数组的长度不一样
多维数组
a=[1][2][3]...int{1}{2}{3}... 一个[]就代表一个一维数组,最常用的是二维整形数组
a=[2][3]int{{1,2,3},{3,3,1}} 声明了一个二维数组并赋值
a=[4][2]int{1:{0:20},3:{1,41}}声明并初始化数组中指定的元素
4表示列,2表示行
1:{}表示索引的第2个,也就是第二行; {0:20}表示索引的第1个并且赋值为20,第2个索引则为0
3:{}表示索引的第4个,也就是第4行;{1:41}表示索引的第2个并且赋值为41,第1个索引则为0
如果其他索引都没有被赋值的话,那就全部默认为0
取值:
Println(a[1][0]) 输出的值为20
索引的第二行第一个值,你也可以这样理解
//循环取值
for index,value:=range.a{//index是索引,value是值
Println(index,value)
}
跟数组的循环取值一样
只要多维数组的类型一致,就可以互相赋值
打个比方:
如果一个名为a的二维数组赋值给了b
并且当中修改了a的值
修改了并不会影响输出b的值,反之一样,相当于开辟了一个新的空间,他们互相修改值并不会影响对方的值