Слайсы — это динамически изменяемые представления массивов.
| Характеристика | Массив (Array) | Слайс (Slice) |
|---|---|---|
| Размер | Фиксированный, определяется при создании | Динамический, может изменяться |
| Тип | [n]T (где n - размер, T - тип) | []T (где T - тип) |
| Передача в функции | По значению (копия) | По ссылке на underlying array, передаются head, len и cap (фактически, создается новая структура SliceHeader с копиями этих полей) |
| Создание | var a [5]int или b := [3]string{"a", "b", "c"} | var s []int или t := []int{1, 2, 3} или u := make([]int, 5) |
| Производительность | Более предсказуемая производительность из-за фиксированного размера, может выигрывать при небольших размерах | Может иметь накладные расходы при изменении размера (перевыделение underlying array) |
go