陣列和切片是 go 語言中常見的資料結構,很多剛剛使用 go 的開發者往往會混淆這兩個概念。陣列作為最常見的集合在程式語言中是非常重要的,除了陣列之外,go 語言引入了另乙個概念 — 切片,切片與陣列有一些類似,但是它們的不同導致了使用上的巨大差別。
golang array和以往認知的陣列有很大不同
go 語言的陣列有兩種不同的建立方式,一種是顯式的指定陣列大小,另一種是使用 […]t 宣告陣列,go 語言會在編譯期間通過源**推導陣列的大小: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。
arr1 := [3]int1.1 陣列初始化:arr2 := […]int
arr1 和arr2 在執行時是完全等價的,[…]t 這種初始化方式也只是 go 語言為我們提供的一種語法糖
一維陣列:
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 ...