数组
数组是具有相同唯一类型的一组已编号且长度固定的数据项序列;这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。数组长度必须是一个常量表达式,并且必须是一个非负整数。数组长度也是数组类型的一部分,所以[5]int和[10]int是属于不同类型的。
数组声明格式:
var array [len]type ; 或者 array := [len]type{} 注意:这里的{}是必须的
ep:
var names [5]string; 或者 array := [5]string{}
获取数组长度:
var arr [5]int or arr := [5]int{}
ep:
len(arr) //5
range遍历数组:
arr := [5]int{1, 2, 3, 4}
ep:
for i, v := range arr {
//i 为index, v为value
//如果i在这里不使用,则不能这样使用,不然编译会报错, ep: for _, v := range arr {}
}
注意:这里的value只是值拷贝,不能在这里更改数组的值。
range的用法细节:
1、for i,v := range arr { }
2、var i,v int
for i,v = range arr { }
1和2的却别在于,1是让定义i,v并同时接收range返回的值, 2则是用两个定义好的变量去接收range返回的值。
注意:Go语言中数组是一种值类型,所以可以通过new关键字来创建
var arr1 = new([5]int) or arr1 := new([5]int)
var arr2 [5]int or arr2 := [5]int{}
区别:
arr1的类型是: *[5]int, arr2的类型是[5]int
数组字面量:
var arrKeyValue = [5]string{3: "xuechao", 4: "liu"} //这里讲这个数组的第4个和第5个元素分别指定为了"xuechao", "liu", 3和4分别代表为数组的索引
or:
var arr = [4]{1,2,3,4} or arr := [4]int{1,2,3,4}
将数组传递给函数:
如果传递一个大的数组,则会消耗很多内存,有两种方法可以解决:
1,传递数组的指针
2,传递数组的切片
多维数组的声明并初始化:
var arrs= [5][10][4]int{{{1, 2}, {2, 3}}, {{3, 4}, {4, 5}}}