Проверяет знание логики расширения среза и возможного перевыделения памяти.
append добавляет элементы к срезу. Если len < cap, новые элементы записываются в существующий массив. При len == cap создаётся новый массив, обычно вдвое больше предыдущей ёмкости, старые элементы копируются, затем добавляются новые, и возвращается новый срез.
Проверка capacity:
Если места хватает → записать без аллокации.
Grow logic:
Новая ёмкость = cap*2 или needed, в зависимости от размера и ограничений.
Аллокация:
newArr := make([]T, newLen, newCap)
copy(newArr, oldArr)
newArr[len(oldArr):] = elems
Возврат:
Возвращает новый срез, указывающий на новый массив.