Go за Прикладом: Масиви (Arrays)

Work in Progress / Сайт в процесі розробки

Структура даних - массив, в Go, це послідовність елементів визначеної довжини.

package main
import "fmt"
func main() {

Тут ми створюємо масив a, що вміщуватиме рівно 5 цілих чисел (типу int). Тип елементів та довжина є частиною типізації масиву. Не ініціалізовані заначення масиву - приймають нульове значення базового типу елемента масиву (наприклад 0 для int)

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

Значення елементів масиву можливо як встановлювати, так і повертати повертати за допомогою індексу (це - порядковий номера елемента в масиві що починається з 0) використовуючи наступний синтаксис.

    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)

Окрім цього дозволяється заміняти довжину масиву знаком elipsis ... при однорядковій декларації, це призведе до визначення довжини масиву під час компіляції. Окрім того, можна вказувати початковий індекс елемента масиву (в такому випадку пропущені елменти - приймуть нульове значення).

    c := [...]int{1: 1, 2, 4, 8, 16}
    fmt.Println("elipsis:", c)

Ви можете компонувати одномірні масиви в багатомірні. Наприклад, ось тут - ми створюємо багатомірний масив з базовим типом елемента масив цілих чисел (array of ints), кожен з яких є одномірним масивом з базовим елементом - ціле число (int).

    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)
}

Зауважте, масив, що надруковано функцією 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]
elipsis: [0 1 2 4 8 16]
2d:  [[0 1 2] [1 2 3]]

Масив служить отопрою іншій структурі даних, у якою ми познайомимось у наступному прикладі. ця структура даних зветься - зріз (slices)

Наступний приклад: Зрізи (Slices).