Задача об удаление элемента из слайса без циклов

Напишите функцию:

// RemoveAt возвращает новый слайс, в котором из s удалён элемент с индексом idx.
// Если idx выходит за пределы [0, len(s)-1], возвращается исходный слайс неизменённым.
func RemoveAt(s []int, idx int) []int

Требования:

  1. Нельзя использовать явные циклы (for, range и т.п.).
  2. Операцию удаления нужно выполнить только с помощью операций со слайсами и стандартной функции append.

Подсказки:

Примеры

// № 1
s := []int{10, 20, 30, 40, 50}
res := RemoveAt(s, 2) // удаляем элемент с индексом 2 (значение 30)
fmt.Println(res)      // ожидаемый вывод: [10 20 40 50]

// № 2
s := []int{1, 2, 3}
res := RemoveAt(s, 0) // удаляем элемент с индексом 0 (значение 1)
fmt.Println(res)      // ожидаемый вывод: [2 3]

// № 3
s := []int{5, 6, 7}
res := RemoveAt(s, 5) // idx = 5 выходит за пределы (len(s)=3)
fmt.Println(res)      // ожидаемый вывод: [5 6 7] (слайс не изменился)

// №4
s := []int{100, 200, 300}
res := RemoveAt(s, -1) // idx = -1 тоже неверный
fmt.Println(res)       // ожидаемый вывод: [100 200 300] (слайс не изменился)

Что проверяет задача: