? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?數組
數組是具有相同唯一類型的一組已編號且長度固定的數據項序列;這種類型可以是任意的原始類型例如整形、字符串或者自定義類型。數組長度必須是一個常量表達式,并且必須是一個非負整數。數組長度也是數組類型的一部分,所以[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}}}