Что такое массив (array) ?

Спросят с вероятностью 8%



Массив (array) — это структура данных, которая представляет собой фиксированную последовательность элементов одного типа. Все элементы массива размещены в памяти последовательно и имеют одинаковый тип. Используются для хранения коллекций данных, где количество элементов заранее известно и фиксировано.



Основные характеристики



1️⃣Фиксированный размер: Размер массива задается при его объявлении и не может изменяться во время выполнения программы.

2️⃣Тип элементов: Все элементы массива имеют один и тот же тип.

3️⃣Непрерывное размещение в памяти: Элементы массива хранятся последовательно в памяти, что обеспечивает быстрый доступ к любому элементу по индексу.



Объявление и инициализация массивов



Массивы объявляются с указанием типа элементов и фиксированного размера:

var arr [5]int




Это объявление создает массив из пяти целых чисел, инициализированных нулями.



Инициализация массива



Могут быть инициализированы при объявлении:

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




Можно также инициализировать массив частично, оставив остальные элементы равными нулям:

arr := [5]int{1, 2}




Доступ к элементам массива



Осуществляется с использованием индексов, начиная с 0:

fmt.Println(arr[0]) // 1

arr[1] = 10

fmt.Println(arr[1]) // 10




Длина массива



Фиксирована и задается при его объявлении. Ее можно получить с помощью функции len:

fmt.Println(len(arr)) // 5




Копирование массива



При присваивании одного массива другому копируются все элементы:

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

arr2 := arr1

arr2[0] = 10

fmt.Println(arr1) // [1 2 3 4 5]

fmt.Println(arr2) // [10 2 3 4 5]




Передача массива в функции



Копируется весь массив:

func modifyArray(a [5]int) {

a[0] = 10

}



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

modifyArray(arr)

fmt.Println(arr) // [1 2 3 4 5]




Сравнение массивов



С помощью оператора ==, если они имеют одинаковую длину и тип элементов:

arr1 := [3]int{1, 2, 3}

arr2 := [3]int{1, 2, 3}

arr3 := [3]int{4, 5, 6}



fmt.Println(arr1 == arr2) // true

fmt.Println(arr1 == arr3) // false




Пример:

package main



import (

"fmt"

)



func main() {

// Объявление и инициализация массива

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



// Доступ к элементам

fmt.Println("First element:", arr[0]) // First element: 1



// Изменение элементов

arr[1] = 10

fmt.Println("Modified array:", arr) // Modified array: [1 10 3 4 5]



// Длина массива

fmt.Println("Length of array:", len(arr)) // Length of array: 5



// Копирование массива

arr2 := arr

arr2[0] = 20

fmt.Println("Original array:", arr) // Original array: [1 10 3 4 5]

fmt.Println("Copied array:", arr2) // Copied array: [20 10 3 4 5]



// Передача массива в функцию

modifyArray(arr)

fmt.Println("Array after modifyArray call:", arr) // Array after modifyArray call: [1 10 3 4 5]

}



func modifyArray(a [5]int) {

a[0] = 10

}




Массивы предоставляют простую и эффективную структуру данных с фиксированным размером. Они полезны для задач, где размер данных известен заранее и не изменяется, обеспечивая прямой доступ к элементам и низкие накладные расходы на управление.



👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 349 вопроса на Golang разработчика. Ставь 👍 если нравится контент



🔐 База собесов | 🔐 База тестовых