例で学ぶ Go: 配列

Go では、配列 は、一定の長さの特定の要素の番号付きシーケンスです。一般的な Go コードでは、スライス がはるかに一般的です。配列は、いくつかの特別なシナリオで便利です。

package main
import "fmt"
func main() {

ここでは、正確に 5 つの int を保持する配列 a を作成します。要素のタイプと長さは、どちらも配列のタイプのの一部です。配列はデフォルトでゼロ値で、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))

この構文を使用して、1 行で配列を宣言して初期化します。

    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)

配列のタイプは 1 次元ですが、タイプを合成して多次元データ構造を構築できます。

    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]]

次の例: スライス