Оператор ... после слайса разворачивает его в отдельные аргументы: f(slice...) эквивалентно f(slice[0], slice[1], ...).
nums := []int{1, 2, 3}
fmt.Println(nums...) // как fmt.Println(1, 2, 3)
Sum(nums...)
// Без ... - один аргумент типа []int:
Sum(nums) // ошибка типов, если Sum(...int)