Назад к вопросам
Junior — Middle
78
Как правильно создавать и инициализировать срезы в Go?
Компании, где спрашивали
Эрливидео
Самокат Тех
Ответ от нейросети
sobes.tech AI
В Go срезы (slices) — это динамические структуры данных, которые представляют собой ссылку на массив с указанием длины и ёмкости.
Создавать и инициализировать срезы можно несколькими способами:
- Объявление среза без инициализации (nil-срез):
var s []int // nil-срез, длина и ёмкость 0
- Инициализация среза с помощью литерала:
s := []int{1, 2, 3} // срез длиной 3
- Создание среза с помощью функции make:
s := make([]int, 5) // срез длиной 5, заполненный нулями
s2 := make([]int, 3, 10) // длина 3, ёмкость 10
Функция make выделяет массив под капотом и возвращает срез, указывающий на него.
- Создание среза из массива:
arr := [5]int{1, 2, 3, 4, 5}
s := arr[1:4] // срез элементов с индексами 1,2,3
Важно помнить, что срезы — это ссылки на массивы, поэтому изменение элементов среза изменяет и исходный массив.
Пример использования:
package main
import "fmt"
func main() {
s := make([]int, 3, 5)
fmt.Println(s) // [0 0 0]
fmt.Println(len(s)) // 3
fmt.Println(cap(s)) // 5
s = append(s, 4, 5)
fmt.Println(s) // [0 0 0 4 5]
fmt.Println(len(s)) // 5
fmt.Println(cap(s)) // 5
}
Такой подход позволяет эффективно работать с динамическими массивами в Go.