Срез в Go — это динамически изменяемый, гибкий вид на базовый массив. В отличие от массивов, срезы могут расти или уменьшаться во время выполнения, поэтому они — предпочтительная структура данных для работы с последовательностями элементов.
type Slice struct {
pointer *Type // Указывает на первый элемент
length int // Текущее количество элементов
capacity int // Максимальное количество элементов до переназначения
}
var s []int или s := []int{1, 2, 3}s = append(s, value) динамически увеличивает срезs[1:3] создаёт новый вид на тот же базовый массивlen(s) и cap(s), чтобы проверить метрики размераСрезы дают гибкость, которую массивы фиксированного размера не могут предложить. Они идеальны, когда ты заранее не знаешь размер данных или часто нужно менять коллекции. Массивы лучше только когда размер определён заранее и не изменится.
Когда ты добавляешь элементы сверх ёмкости, Go выделяет новый базовый массив и копирует существующие элементы. Это значит, что несколько срезов могут делить один базовый массив, пока один из них не увеличится сверх общей ёмкости.
Slice в Go — это составной тип, состоящий из трёх компонентов: указателя на базовый массив, текущей длины и ёмкости.
Новый — ещё не проверен сообществом
Вы