Расскажи про массивы и слайсы в Go: чем они похожи и в чём отличие.

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

Ключевые отличия:

Признак Массив Слайс
Длина Фиксированная Динамическая
Создание [N]Тип (N - размер) []Тип или make([]Тип, len, cap)
Передача По значению По ссылке (на базовый массив)
Изменение размера Невозможно Возможно (с помощью append)

Примеры:

// Объявление и инициализация массива
var arr [3]int // массив из 3х int, инициализирован нулями
arr2 := [2]string{"a", "b"} // массив из 2х string
// Объявление и инициализация слайса
var slice []int // nil слайс
slice2 := []string{"x", "y", "z"} // слайс из 3х string
slice3 := make([]int, 5) // слайс из 5ти int, инициализирован нулями
slice4 := make([]int, 2, 5) // слайс из 2х int, инициализирован нулями, с емкостью 5
// Пример поведения слайса
arr := [5]int{1, 2, 3, 4, 5}
slice := arr[1:4] // слайс referencing arr[1], arr[2], arr[3]
slice[0] = 99 // изменяет arr[1]

// Изменение размера слайса
slice = append(slice, 100) // создает новый базовый массив, если текущий не вмещает элемент

Слайсы являются более гибкими и часто используются вместо массивов в Go. Они предоставляют удобный способ работы с последовательностями данных переменной длины.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку