? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?數(shù)組
數(shù)組是具有相同唯一類型的一組已編號(hào)且長度固定的數(shù)據(jù)項(xiàng)序列;這種類型可以是任意的原始類型例如整形、字符串或者自定義類型。數(shù)組長度必須是一個(gè)常量表達(dá)式,并且必須是一個(gè)非負(fù)整數(shù)。數(shù)組長度也是數(shù)組類型的一部分,所以[5]int和[10]int是屬于不同類型的。
數(shù)組聲明格式:
var array [len]type ;? 或者 array := [len]type{} 注意:這里的{}是必須的
ep:
?var names [5]string; 或者 array := [5]string{}
獲取數(shù)組長度:
var arr [5]int or arr := [5]int{}?
ep:
len(arr) //5
range遍歷數(shù)組:
arr := [5]int{1, 2, 3, 4}
ep:
for i, v := range arr {
? //i 為index, v為value
? //如果i在這里不使用,則不能這樣使用,不然編譯會(huì)報(bào)錯(cuò), ep: for _, v := range arr {}
}
注意:這里的value只是值拷貝,不能在這里更改數(shù)組的值。
range的用法細(xì)節(jié):
1、for i,v := range arr { }
2、var i,v int
? ? ? ?for i,v = range arr { }
1和2的卻別在于,1是讓定義i,v并同時(shí)接收range返回的值, 2則是用兩個(gè)定義好的變量去接收range返回的值。
注意:Go語言中數(shù)組是一種值類型,所以可以通過new關(guān)鍵字來創(chuàng)建
var arr1 = new([5]int) ?or arr1 := new([5]int)
var arr2 [5]int? or arr2 := [5]int{}
區(qū)別:
arr1的類型是: *[5]int, ?arr2的類型是[5]int
數(shù)組字面量:
var arrKeyValue = [5]string{3: "xuechao", 4: "liu"}?//這里講這個(gè)數(shù)組的第4個(gè)和第5個(gè)元素分別指定為了"xuechao", "liu", 3和4分別代表為數(shù)組的索引
or:
var arr = [4]{1,2,3,4} ?or ?arr := [4]int{1,2,3,4}
將數(shù)組傳遞給函數(shù):
如果傳遞一個(gè)大的數(shù)組,則會(huì)消耗很多內(nèi)存,有兩種方法可以解決:
1,傳遞數(shù)組的指針
2,傳遞數(shù)組的切片
多維數(shù)組的聲明并初始化:
var arrs= [5][10][4]int{{{1, 2}, {2, 3}}, {{3, 4}, {4, 5}}}