Skip to main content

Информация по append в Go

append — одна из самых важных встроенных функций в Go для работы со слайсами. Ниже рассмотрены все возможные способы использования, примеры и пояснения.


🔧 Базовый синтаксис

append(slice, elems...)
  • slice — срез, к которому добавляем
  • elems... — один или несколько элементов или другой срез

✅ Варианты использования

1. Добавить один элемент

nums := []int{1, 2}
nums = append(nums, 3)
// → [1 2 3]

2. Добавить несколько элементов

nums = append(nums, 4, 5, 6)
// → [1 2 3 4 5 6]

3. Добавить другой срез

more := []int{7, 8}
nums = append(nums, more...) // обязательно `...`!

4. Добавить пустой срез

nums = append(nums, []int{}...) // всё ещё [1 2 3 4 5 6 7 8]

5. Добавить к nil-срезу

var s []int
s = append(s, 10) // работает, даже если s == nil

6. Удалить элемент (по индексу)

i := 2
s = append(s[:i], s[i+1:]...)

📐 Как работает append

  • Если у слайса есть свободная capacity — элементы просто добавляются.
  • Если нет — Go создаёт новый массив, копирует старые значения и добавляет новые.
  • Поэтому append может изменить underlying array.

🛠 Трюки с append

🔁 Объединение слайсов

a := []string{"a", "b"}
b := []string{"c", "d"}
a = append(a, b...) // → [a b c d]

🪓 Удаление последнего элемента

s = s[:len(s)-1]

⚠️ Важно помнить

  • append всегда возвращает новый слайс (возможно тот же, возможно новый)
  • Обязательно ..., если добавляешь другой срез: append(s, other...)
  • Работает только со слайсами, не с массивами

🧠 Сводка

ИспользованиеПример
Один элементappend(s, 10)
Несколько элементовappend(s, 1, 2, 3)
Добавить срезappend(s, other...)
Удалить элементappend(s[:i], s[i+1:]...)
Работать с nil-срезомappend(nil, 1)