Go by Example:陣列

在 Go 中,陣列是指定長度、按序編號的元素序列。一般在 Go 的程式碼中,切片 的使用較為普遍;陣列則在一些特殊狀況下較為實用。

package main
import "fmt"
func main() {

以下我們建立一個包含 5 個 int 型元素的陣列 a。陣列的型態與長度都決定於陣列型態。預設值為 0,對 int 型別而言,則為 0

    var a [5]int
    fmt.Println("emp:", a)

我們可以用 array[index] = value 語法設定某個索引的數值,並以 array[index] 來讀取。

    a[4] = 100
    fmt.Println("set:", a)
    fmt.Println("get:", a[4])

內建函式 len 可以傳回陣列的長度。

    fmt.Println("len:", len(a))

使用下列語法可以在一行中宣告與初始化陣列。

    b := [5]int{1, 2, 3, 4, 5}
    fmt.Println("dcl:", b)

你也可以使用 ... 讓編譯器計算元素的數目。

    b = [...]int{1, 2, 3, 4, 5}
    fmt.Println("dcl:", b)

如果你使用 : 指定索引,則中間的元素會被歸零。

    b = [...]int{100, 3: 400, 500}
    fmt.Println("idx:", b)

陣列型態為一維的,但可以透過組合型態來建立多維度的資料結構。

    var twoD [2][3]int
    for i := 0; i < 2; i++ {
        for j := 0; j < 3; j++ {
            twoD[i][j] = i + j
        }
    }
    fmt.Println("2d: ", twoD)

你也可以同時建立與初始化多維陣列。

    twoD = [2][3]int{
        {1, 2, 3},
        {1, 2, 3},
    }
    fmt.Println("2d: ", twoD)
}

fmt.Println 列印時,陣列會以 [v1 v2 v3 ...] 形式出現。

$ go run arrays.go
emp: [0 0 0 0 0]
set: [0 0 0 0 100]
get: 100
len: 5
dcl: [1 2 3 4 5]
dcl: [1 2 3 4 5]
idx: [100 0 0 400 500]
2d:  [[0 1 2] [1 2 3]]
2d:  [[1 2 3] [1 2 3]]

下一個範例:切片