Перейти к основному содержимому

Массивы

Массивы представляют последовательность элементов определенного типа. Массив определяется следующим способом:

var numbers [число_элементов]тип_элементов

Например, массив из пяти элементов типа int:

var numbers [5]int
также можно инициализировать элементы массива другими значениями:

При таком определении все элементы массива инициализируются значениями по умолчанию. Но

var numbers [5]int = [5]int{1,2,3,4,5}

Значения передаются в фигурных скобках через запятую. При этом значений не может быть больше длины массива. В данном случае длина массива равна 5, поэтому нельзя в фигурных скобках определить больше пяти элементов. Но можно определить меньше элементов:

var numbers [5]int = [5]int{1,2}
fmt.Println(numbers) // [1 2 0 0 0]

В этом случае элементы, для которых не указано значение, будут иметь значение по умолчанию.

Также можно применять сокращенное определение переменной массива:

numbers := [5]int{1,2,3,4,5}

Если в квадратных скобках вместо длины указано троеточие, то длина массива определяется, исходя из количества переданных ему элементов:

var numbers = [...]int{1,2,3,4,5}   // длина массива 5
numbers2 := [...]int{1,2,3} // длина массива 3
fmt.Println(numbers) // [1 2 3 4 5]
fmt.Println(numbers2) // [1 2 3]

При этом длина массива является частью его типа. И, к примеру, следующие два массива представляют разные типы данных, хотя они и хранят данные одного типа:

var numbers [3]int = [3]int{1, 2, 3}
var numbers2 [4]int = [4]int{1, 2, 3, 4}
numbers = numbers2 // ! Ошибка

И в данном случае при присвоении мы получим ошибку, так как данные одного типа пытаемся передать переменной другого типа.