Назад к вопросам
Senior
1
В чем разница между массивами и срезами (slices) в Go?
Компании, где спрашивали
sber tech
Ответ от нейросети
sobes.tech AI
Массивы в Go имеют фиксированную длину, которая задаётся при объявлении и не может изменяться. Они хранят элементы подряд в памяти и передаются по значению, то есть копируются при передаче в функции.
Срезы (slices) — это динамические структуры, которые описывают часть массива. Они содержат указатель на массив, длину и ёмкость. Срезы позволяют работать с изменяемыми последовательностями элементов и передаются по ссылке, что эффективнее.
Пример:
var arr [3]int = [3]int{1, 2, 3} // массив фиксированной длины
var s []int = arr[:] // срез, ссылающийся на весь массив
s = append(s, 4) // добавление элемента в срез (создаст новый массив, если ёмкость исчерпана)
Основное отличие — массивы фиксированы по размеру и копируются при передаче, срезы динамичны и более гибки в использовании.