Sobes.tech
Назад к вопросам
Junior — Middle
78

Как правильно создавать и инициализировать срезы в Go?

Компании, где спрашивали
Эрливидео
Самокат Тех

Ответ от нейросети

sobes.tech AI

В Go срезы (slices) — это динамические структуры данных, которые представляют собой ссылку на массив с указанием длины и ёмкости.

Создавать и инициализировать срезы можно несколькими способами:

  1. Объявление среза без инициализации (nil-срез):
var s []int // nil-срез, длина и ёмкость 0
  1. Инициализация среза с помощью литерала:
s := []int{1, 2, 3} // срез длиной 3
  1. Создание среза с помощью функции make:
s := make([]int, 5) // срез длиной 5, заполненный нулями
s2 := make([]int, 3, 10) // длина 3, ёмкость 10

Функция make выделяет массив под капотом и возвращает срез, указывающий на него.

  1. Создание среза из массива:
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.