Информация по 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
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)