Go中的陣列
概念
陣列是用來儲存集合的資料。除了陣列還有切片, map對映等, 但陣列是他們的基礎。
內部實現
- 陣列是長度固定的資料型別
- 陣列必須儲存型別相同並且連續的元素
- 可以通過索引獲得陣列中的任意資料
- 因為資料元素型別相同, 也可以通過反射, 獲取型別佔用大小, 進行移位, 獲取相應元素
宣告和初始化
宣告特點
- 指定儲存資料的型別
- 指定儲存資料的數量
- 陣列一旦宣告之後, 元素型別和大小都不能發生改變; 如果要改變陣列結構只能建立新陣列, 將原陣列複製進去
初始化
-
用零值初始化陣列, 用值再次初始化
var array [5]int array = [5]int{1, 2, 3, 4, 5} 複製程式碼
-
使用
:=
符號進行初始化array := [5]int{1, 2, 3, 4, 5} 複製程式碼
-
使用
...
符號初始化陣列array := [...]int{1, 2, 3, 4, 5} 複製程式碼
-
陣列部分初始化
array := [...]int{0 ,1, 0, 4, 0} array := [...]int{1: 1, 3: 4} 複製程式碼
使用陣列
訪問陣列
使用索引進行陣列資料訪問
array:=[5]int{1:1,3:4}
fmt.Printf("%d",array[1])
複製程式碼
修改陣列
使用索引修改陣列
array:=[5]int{1:1,3:4}
fmt.Printf("%d\n",array[1])
array[1] = 3
fmt.Printf("%d\n",array[1])
複製程式碼
獲得陣列中的所有值
-
for迴圈
array := [5]int{1: 1, 3: 4} for i := 0; i < 5; i++ { fmt.Printf("索引:%d,值:%d\n", i, array[i]) } 複製程式碼
-
for range 迴圈
func main() { array := [5]int{1: 1, 3: 4} for i, v := range array { fmt.Printf("索引:%d,值:%d\n", i, v) } 複製程式碼
相同型別陣列賦值
-
相同陣列
- 陣列長度一致
- 陣列中每個元素型別必須一致
-
賦值過程
array := [5]int{1, 2, 3, 4, 5} var array1 [5]int = array // success var array2 [4]int = array // error 複製程式碼
指標陣列
- 元素型別為指標的陣列
- 只能給分配記憶體的索引賦值, 未分配的索引是無效的
- 建立過程
array := [5]*int{1: new(int), 3:new(int)} *array[1] = 1 複製程式碼
注意點
- 陣列指標和指標陣列是兩個概念
- 陣列指標
*[5]int
- 指標陣列
[5]*int