Массивы

Массив в Go имеет фиксированный размер, который является частью типа. [3]int и [5]int — разные типы.

var a [3]int            // [0 0 0]
b := [3]int{1, 2, 3}
c := [...]int{4, 5, 6}  // компилятор считает элементы сам
b[0] = 10
fmt.Println(b[1])     // 2
fmt.Println(len(b))   // 3

Выход за границы — паника во время выполнения. Обращение к отрицательному индексу — ошибка компиляции.

В отличие от C, массив Go — значение. Присваивание копирует все элементы:

a := [3]int{1, 2, 3}
b := a          // копия
b[0] = 99
fmt.Println(a)  // [1 2 3] — не изменился

Из-за этого большие массивы обычно не передают напрямую в функции — используют срезы.

var grid [3][3]int
grid[1][1] = 5

ЗаданиеСложность
1Упражнение 1easy
2Упражнение 2easy