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 := range 2 {
        for j := range 3 {
            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]]

Далее: .