542просмотров
11.1%от подписчиков
25 марта 2026 г.
questionScore: 596
🤔 Как устроен массив в Go? Массивы представляют собой фиксированную последовательность элементов одного типа. Являются основополагающей структурой данных, на базе которой строятся более сложные структуры, такие как слайсы. Рассмотрим, как устроены массивы, их особенности, а также сравнение с другими структурами данных. 🚩Основные характеристики 🟠Фиксированный размер
Размер массива задается при его объявлении и не может изменяться во время выполнения программы.
🟠Тип элементов
Все элементы массива имеют один и тот же тип.
🟠Непосредственное хранение данных
В отличие от слайсов, массивы хранят свои элементы в непрерывном блоке памяти. 🟠Объявление массива
С указанием типа элементов и фиксированного размера. Это объявление создает массив из пяти целых чисел, инициализированных нулями.
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] 🚩Сравнение 🟠Размер
Массивы имеют фиксированный размер, тогда как слайсы динамичны. 🟠Производительность
Массивы могут быть более производительными для небольших коллекций данных из-за отсутствия накладных расходов на управление динамическими данными. 🟠Гибкость: Слайсы более гибки благодаря динамическому изменению размера и доступным методам. Использование массивов
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
} Ставь 👍 и забирай 📚 Базу знаний