Sobes.tech
Back to questions
Senior
4

Что такое slice и чем отличается от массива?

Companies where asked
Магнум

Answer from AI

sobes.tech AI

В Go массив (array) — это структура фиксированного размера, которая содержит элементы одного типа. Размер массива задаётся при объявлении и не может изменяться в процессе выполнения программы.

Slice — это динамический, изменяемый по размеру срез массива. Он представляет собой структуру, которая содержит указатель на массив, длину и ёмкость. Срезы позволяют работать с подмножествами массива и автоматически расширяться при необходимости.

Основные отличия:

  • Размер: массив имеет фиксированный размер, slice — динамический.
  • Передача: массивы передаются по значению (копируются), срезы — по ссылке (указатель на массив).
  • Гибкость: slice можно расширять с помощью функции append, массив — нет.

Пример:

var arr [3]int = [3]int{1, 2, 3} // массив фиксированного размера

var s []int = arr[0:2] // slice, ссылающийся на часть массива

s = append(s, 4) // slice расширяется, при необходимости создаётся новый массив