G
Golang | Вопросы собесов
@easy_golang4.9K подп.
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 } Ставь 👍 и забирай 📚 Базу знаний
542
просмотров
2915
символов
Да
эмодзи
Нет
медиа

Другие посты @easy_golang

Все посты канала →
🤔 Как устроен массив в Go? Массивы представляют собой фикси — @easy_golang | PostSniper