go 語言數組

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{}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章