1.什麼是數組
數組屬於複合型數據類型,它是由相同類型的一組零個或多個元素組成的固定長度的集合。go語言中很少直接使用數組,一般使用slice(切片),切片的長度是可以擴展的,但是slice的底層還是使用的數組。數組提供了len()方法統計自己的長度。
2.數組的聲明和初始化
聲明數組:
a.沒有指定數組的大小
var arrInt []int fmt.Printf("%T",arrInt)
b.指定數組的大小
var arrInt [8]int
數組初始化:
a.使用字面值語法用一直值初始化數組
var test [3]int = [3]int{1,2,3}
b.在不知道要初始化具體長度的數組,需要根據具體元素個數初始化數組是,可以使用"..."聲明數組
td := [...]int{0,4,5,2}
c.在數組的指定位置賦值
tx := [...]int{6:6} fmt.Printf("%T,%d\n",tx, tx[6])
3.數組比較
如果兩個數組的元素是可以比較的,那麼這兩個數組也是可以相互比較的。直接通過“==”就可以直接比較兩個數組,在兩個數組長度、容量、和所有元素及對應位置都相同時,則這兩個數組是相等的。
var a [2]int = [2]int{1,2} b := [...]int{1,2} fmt.Printf("%t\n",a == b)
比價的結果爲true,說明這兩個數組是相等的。
4.數組引用
當數組當做參數傳入到指定的func中時,函數參數變量實際接收的是數組複製的副本,在函數中對數組做任何的修改都不會改變原有的數組。其他大多數語言都是隱式的將數組引用或指針傳入到函數或方法中,go語言在這方法和其他語言是不同的。
當希望在函數中能直接改變原有的數組時,可以顯示地傳入數組的指針。例如下面例子將數組清零
func toZero(p *[32]byte){ for i := range p{ p[i] = 0 } }
當然函數也可以簡化爲
func toZero1(p *[32]byte){ *p = [32]byte{} }