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

Каким образом вставить новый элемент в центральную часть динамического массива (слойса)?

Компании, где спрашивали
СБЕРСБЕР

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

sobes.tech AI

В Go для вставки нового элемента в середину слайса нужно создать новый слайс, объединив части до и после позиции вставки, и вставляемый элемент. Например, чтобы вставить элемент x в позицию i слайса s:

s = append(s[:i], append([]T{x}, s[i:]...)...)

Здесь T — тип элементов слайса. Этот приём работает так:

  1. Берём срез с начала до позиции i (не включая i): s[:i]
  2. Создаём слайс из одного элемента x: []T{x}
  3. Берём срез с позиции i до конца: s[i:]
  4. Внутренний append объединяет вставляемый элемент и хвост слайса
  5. Внешний append добавляет всё к началу

Пример:

s := []int{1, 2, 4, 5}
x := 3
i := 2
s = append(s[:i], append([]int{x}, s[i:]...)...)
// s теперь: [1 2 3 4 5]

Это стандартный способ вставки в середину слайса в Go.