Go語言數組

數組是具備相同惟一類型的一組已編號且長度固定的數據項序列,這種類型能夠是任意的原始類型例如整形、字符串或者自定義類型。數組

 

在Go語言中數組是固定長度的數據類型,它包含相同類型的連續的元素,這些元素能夠是內建類型,像數字和字符串,也能夠是結構類型,元素可以經過惟一的索引值訪問,從0開始。緩存

 

數組是頗有價值的數據結構,由於它的內存分配是連續的,內存連續意味着能夠讓它在CPU緩存中待更久,因此迭代數組和移動元素都會很是迅速數據結構

 

數組定義

第一種,經過指定數據類型和元素個數(數組長度)來聲明數組。函數

聲明一個長度爲5的整數數組:spa

var array [5]int

聲明一個長度爲5的整數數組並初始化:code

var array [5]int = [5]int{1, 2, 3, 4, 5}

第二種,一種快速建立和初始化數組的方法是使用數組字面值。數組字面值容許咱們聲明咱們須要的元素個數並指定數據類型。blog

聲明一個長度爲5的字符串數組並初始化每一個元素:索引

array := [5]string{"Linux", "Python", "Java", "Golang", "DBA"}

第三種,若是你把長度寫成…,Go編譯器將會根據你的元素來推導出長度。內存

經過初始化值的個數來推導出數組容量:element

array := [...]int{1, 2, 3, 4, 5}

第四種,若是咱們知道想要數組的長度,可是但願對指定位置元素初始化。

聲明一個長度爲5的整數數組,爲索引爲1和3的位置指定元素初始化,剩餘元素爲該元素類型的默認值:

array := [5]int{1: 1, 3: 3}

注意:當一個數組被聲明時,它裏面包含的每一個元素都會被初始化爲該元素類型的默認值。一旦數組被聲明瞭,那麼它的數據類型跟長度都不能再被改變。若是你須要更多的元素,那麼只能建立一個你想要長度的新的數組,而後把原有數組的元素拷貝過去。

數組操做

使用內置函數len()和cap()返回數組長度和數組容量。實例以下:

package main

import "fmt"

func main() {
    array := [2]int{}
    fmt.Printf("數組長度:%d,數組容量:%d\n", len(array), cap(array))
}

運行結果:

數組長度:2,數組容量:2

使用 [] 操做符來訪問數組元素:

改變索引爲2的元素的值

array := [5]int{1, 2, 3, 4, 5}
array[2] = 100

注意:數組能夠經過下標進行訪問,數組下標是從0開始,最後一個元素下標是:len(array)-1。若是下標在數組合法範圍以外,則觸發訪問越界。實例以下:

package main

func main() {
    array := [5]int{1, 2, 3, 4, 5}
    array[5] = 100
}

編譯錯誤:

./main.go:5:7: invalid array index 5 (out of bounds for 5-element array)

數組賦值操做,一個數組能夠被賦值給任意相同類型的數組:

注意:

數組的類型同時包括數組的長度和能夠被存儲的元素類型,數組類型徹底相同才能夠互相賦值

var arr1 [5]string
arr2 := [5]string{"Linux", "Python", "Java", "Golang", "DBA"}
arr1 = arr2

多維數組

數組老是一維的,可是能夠組合成多維的。多維數組一般用於有父子關係的數據或者是座標系數據:

聲明一個二維數組

var array [3][6]int

使用數組字面值聲明並初始化

array := [4][2]int{{10, 11}, {20, 21}, {30, 31}, {40, 41}}

指定外部數組索引位置初始化

array := [4][2]int{1: {20, 21}, 3: {40, 41}}

同時指定內外部數組索引位置初始化

array := [4][2]int{1: {20, 21}, 3: {40, 41}}

使用內置函數len()和cap()返回多維數組長度和多維數組容量。實例以下:

package main

import "fmt"

func main() {
    array := [3][6]int{}
    fmt.Printf("數組長度:%d,數組容量:%d\n", len(array), cap(array))
}

運行結果:

數組長度:3,數組容量:3

經過 [] 操做符來訪問數組元素:

var array [2][2]int
array[0][0] = 0
array[0][1] = 1
array[1][0] = 2
array[1][1] = 3

相同類型的多維數組相互賦值:

var arr1 [2][2]int
var arr2 [2][2]int
arr2[0][0] = 0
arr2[0][1] = 1
arr2[1][0] = 2
arr2[1][1] = 3
arr1 = arr2
相關文章
相關標籤/搜索