Go基礎資料結構 陣列Array

2021-10-21 15:32:53 字數 2911 閱讀 7319

陣列和切片是 go 語言中常見的資料結構,很多剛剛使用 go 的開發者往往會混淆這兩個概念。陣列作為最常見的集合在程式語言中是非常重要的,除了陣列之外,go 語言引入了另乙個概念 — 切片,切片與陣列有一些類似,但是它們的不同導致了使用上的巨大差別。

golang array和以往認知的陣列有很大不同

1. 陣列:是同一種資料型別的固定長度的序列。

2. 陣列定義:var a [len]int,比如:var a [5]int,陣列長度必須是常量,且是型別的組成部分。

一旦定義,長度不能變。

3. 長度是陣列型別的一部分,因此,var a[5] int和var a[10]int是不同的型別。

4. 陣列可以通過下標進行訪問,下標是從0開始,最後乙個元素下標是:len-1

5. 訪問越界,如果下標在陣列合法範圍之外,則觸發訪問越界,會panic

6. 陣列是值型別,賦值和傳參會複製整個陣列,而不是指標。因此改變副本的值,不會改變本身的值。

7.支援 "=="、"!=" 操作符,因為記憶體總是被初始化過的。

8.指標陣列 [n]*t,陣列指標 *[n]t。

go 語言的陣列有兩種不同的建立方式,一種是顯式的指定陣列大小,另一種是使用 […]t 宣告陣列,go 語言會在編譯期間通過源**推導陣列的大小:

arr1 := [3]int

arr2 := […]int

arr1 和arr2 在執行時是完全等價的,[…]t 這種初始化方式也只是 go 語言為我們提供的一種語法糖

1.1 陣列初始化:

一維陣列:

package main

import

("fmt"

)//全域性:

var arr0 [5]

int=[5

]int

var arr1 =[5

]int

var arr2 =

[...

]int

var str =[5

]string

func

main()

// 未初始化元素值為 0。

b :=

[...

]int

// 通過初始化值確定陣列長度。

c :=[5

]int

// 使用索引號初始化元素。

d :=

[...

]struct,,

} fmt.

println

(arr0, arr1, arr2, str)

fmt.

println

(a, b, c, d)

}

輸出結果:

[12

300]

[123

45][

1234

56][ hello jay][1

20][

1234

][00

1000

200]

多維陣列:

go 語言陣列在初始化之後大小就無法改變,儲存元素型別相同、但是大小不同的陣列型別在 go

語言看來也是完全不同的,只有兩個條件都相同才是同一型別。

//全域性

var arr0 [5]

[3]int

//全域性初始化多維陣列

var arr1 [2]

[3]int=[

...][3

]int,}

//區域性:

a :=[2

][3]

int,

} b :=

[...][

2]int,,}

// 第 2 緯度不能用 "..."。

fmt.

println

(arr0, arr1)

fmt.

println

(a, b)

輸出結果:

[[0

00][

000]

[000

][00

0][0

00]]

[[12

3][7

89]]

[[12

3][4

56]]

[[11

][22

][33

]]

內建函式 len 和 cap 都返回陣列長度 (元素數量)。

a := [2]int{}

println(len(a), cap(a))

out : 長度:2 容量:2

陣列拷貝和傳參

package main

import

"fmt"

func

printarr

(arr *[5

]int)}

func

main()

printarr

(&arr2)

fmt.

println

(arr2)

}

輸出:

0 51 0

2 03 0

4 0[5 0 0 0 0]

0 51 2

2 33 4

4 5[5 2 3 4 5]

陣列的值拷貝行為會造成效能問題,通常會建議使用 slice,或陣列指標。

Golang基礎 資料結構 陣列(array)

var 變數名 元素數量 長度 元素型別 例如 var a 5 intvar b 4 int注意 1.陣列是多個相同型別資料的組合,乙個組合一旦宣告或定義,其長度是固定的,不能動態變化 2.陣列中的元素可以是任何資料型別,包括值型別和引用型別,但是不可以混用 3.建立後,如果沒有賦值,預設零值 4....

資料結構之(陣列Array)

1.什麼是陣列 2.陣列的優點和缺點 3.案例怎麼實現動態陣列 4.總結 1.什麼是陣列?所謂陣列,是有序的元素序列。若將有限個型別相同的變數的集合命名,那麼這個名稱為陣列名。組成陣列的各個變數稱為陣列的分量,也稱為陣列的元素,有時也稱為下標變數。用於區分陣列的各個元素的數字編號稱為下標。陣列是在程...

JS資料結構 Array陣列

陣列array 建立 1.使用方括號 進行建立和初始化 var arr 建立乙個空陣列 var arr 1,2,3 建立乙個包含數字的陣列 2.使用array建構函式 var arr new array 建立空陣列 var arr new array 1,2,3 建立包含數字的陣列 var arr ...