Array Type
- 在Go裡,陣列為固定長度,元素型態和長度都是陣列型態的一部份
宣告
- 使用
[n]type
來宣告一個陣列,其中n
是數字,type
為型態
1 | package main |
-
這裡宣告 arr 的型態是
[5]int
,因「元素型態與長度都是陣列型態的一部分」,所以[10]int
與[5]int
會是不同的型態。 -
因為後面三個元素並沒有指定新值,但可以看到它的初值是 0 ,也就是 zero value 。
-
宣告給值的話要使用
:=
指定,也可以使用不固定長度[...]
來宣告,它會依後面給值的數量來決定陣列長度:
1 | package main |
- 如果存取陣列超過範圍時,會出現 out of bounds 的編譯錯誤
1 | package main |
複製
- 陣列的內容是值,所以也可以複製給另一個變數
1 | package main |
- 最後一行是型態不一致的錯,型態與長度相同,才有辦法複製值。
比較
- 陣列可以用
==
與!=
來比較內容,一樣型態與長度相同才能比較。
1 | package main |
巢狀陣列
- 當宣告陣列時,
int
是一種型態,所以我們在前面加上[n]
即成為int
的陣列型態。 [n]int
也是一種型態,在前面加上[m]
就會成為[n]int
的陣列型態。
1 | package main |
- 以上,這是一個有 3 個
[n]int
元素的陣列。 - 巢狀陣列也可以宣告同時指定初值:
1 | package main |
- 其中 arr3 不能這樣宣告的原因是:因為長度也是型態的一部分,宣告陣列時元素的型態必須是確定的
- 因此,
[2]int
才能拿來做最外層陣列的元素型態, 而[...]int
不行。
走訪 (我想翻譯成迭代?)
- 陣列除了可以用
for + len()
來走訪外,也可以使用for range
:
1 | package main |