/

Go中的數組

Go中的數組

數組是一系列相同類型的項目。

我們可以這樣定義一個數組:

1
var myArray [3]string //一個包含3個字符串的數組

你可以通過以下方式初始化數組:

1
var myArray = [3]string{"First", "Second", "Third"}

在這種情況下,你還可以讓Go為你計算項目的數量:

1
var myArray = [...]string{"First", "Second", "Third"}

數組只能包含相同類型的值。

數組的大小是固定的,你必須明確定義數組的長度。這是數組的一部分的類型。同時,你不能使用變量來設置數組的長度。

由於這個限制,數組在Go中很少直接使用,而是使用切片(稍後會講到)。切片在內部使用數組,所以了解數組的工作原理還是必要的。

你可以使用方括號的表示法來訪問數組中的項目,這種表示法我們之前在字符串中已經使用過了,用來訪問單個字符:

1
2
myArray[0] //索引從0開始
myArray[1]

你可以在數組的特定位置設置新的值:

1
myArray[2] = "Another"

你可以使用len()函數獲取數組的長度:

1
len(myArray)

數組是值類型。這意味著複製一個數組:

1
anotherArray := myArray

或者把一個數組作為參數傳遞給函數,或者從函數中返回數組,都會創建原始數組的一個副本。

這與其他一些編程語言不同。

讓我們舉個簡單的例子,把一個新的值賦給數組中的一個項目。你會發現複製的數組並沒有改變:

1
2
3
4
5
6
var myArray = [3]string{"First", "Second", "Third"}
myArrayCopy := myArray
myArray[2] = "Another"

myArray[2] //"Another"
myArrayCopy[2] //"Third"

請記住,你只能向數組添加一種類型的項目,例如設置myArray[2] = 2將引發錯誤。

在低層級上,元素在內存中連續存儲。