Что делает оператор "..."?

Подскажите, пожалуйста, для чего нужен оператор "..." (предпоследняя строка кода)

func Sort(input []int) []int {
    l := len(input)
    if l < 2 {
        return input
    }
    less := make([]int, 0)
    bigger := make([]int, 0)
    pivot := input[0]
    for _, v := range input[1:] {
        if v > pivot {
            bigger = append(bigger, v)
        } else {
            less = append(less, v)
        }
    }
    input = append(Sort(less), pivot)
    input = append(input, Sort(bigger)...)
    return input
}

Ответы (1 шт):

Автор решения: Maksim Fedorov

Оператор позволят распаковывать слайс

Вместо:

ss := []int{1,2,3,4,5}
var newSs []int

for _, num := range ss {
    newSs = append(newSs, num)
}

Вы можете написать

ss := []int{1,2,3,4,5}
var newSs []int
newSs = append(newSs, num...)

Проще говоря аналог: append(newSs, num[0], num[1], num[2], ..., num[N]), тк вы не можете не знать число элемнтов (может быть 1, а может быть 10500), а надо все туда заапендить какие есть

Если перейдете в декларацию функции append(), то увидите что она принимает с таким же оператором неопределенное число элементов

func append(slice []Type, elems ...Type) []Type
→ Ссылка