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