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

Что случится, если вставить элемент в начало списка с помощью срезов?

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

sobes.tech AI

В Go срезы — это динамические структуры, которые ссылаются на массив. Если вставить элемент в начало среза с помощью срезов, например, так:

s := []int{2, 3, 4}
s = append([]int{1}, s...)

то создаётся новый срез, в котором элемент 1 добавлен в начало.

Что происходит под капотом:

  • Создаётся новый срез с длиной, увеличенной на 1.
  • Элементы исходного среза копируются в новый срез сдвинутыми на одну позицию.
  • Новый элемент вставляется в начало.

Это неэффективно для больших срезов, так как требует выделения новой памяти и копирования всех элементов. В Go нет встроенной структуры для эффективной вставки в начало, поэтому для таких задач лучше использовать другие структуры данных (например, контейнеры из пакета container/list).

Пример:

package main
import "fmt"

func main() {
    s := []int{2, 3, 4}
    s = append([]int{1}, s...)
    fmt.Println(s) // [1 2 3 4]
}