Go 示例: 数组

在 Go 中,数组是一个具有特定长度的编号元素序列。在典型的 Go 代码中,切片 更加常见;数组在一些特殊情况下很有用。

package main
import "fmt"
func main() {

这里我们创建一个数组 a,它将精确地保存 5 个 int。元素类型和长度都是数组类型的一部分。默认情况下,数组是零值,对于 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]]

下一个示例:切片.