Tham số cuối cùng của hàm có thể khai báo ...T để nhận số lượng đối số biến thiên. Bên trong hàm, tham số đó là một []T thường.
Hai chiều dùng ...:
- Gọi với nhiều đối số rời: sum(1, 2, 3).
- Spread một slice có sẵn: sum(xs...) — truyền thẳng slice, không copy.
Nếu không truyền gì, slice bên trong là nil (len 0). fmt.Println(...any) là ví dụ quen thuộc.
go
func sum(nums ...int) int {
total := 0
for _, n := range nums {
total += n
}
return total
}
sum(1, 2, 3) // 6
xs := []int{1, 2, 3}
sum(xs...) // spread slice có sẵn