← ко всем постам
2026-08-04 · #basics

Слайсы и массивы: в чём разница и почему это важно

Массив в Go имеет фиксированную длину, которая часть его типа: [3]int и [4]int — разные типы. На практике массивы почти не используют — работают со слайсами.

a := []int{1, 2, 3, 4, 5}
b := a[1:3]  // [2 3], но за кулисами тот же массив
b[0] = 99     // теперь a == [1 99 3 4 5] !

Ловушка общей памяти

Слайс b ссылается на тот же базовый массив, что и a. Изменили b — изменился и a. Это частый источник багов.

Если нужна независимая копия — используйте copy() или встроенный slices.Clone() из свежих версий Go.