Tôi đang tự hỏi tại sao nó không thể làm như sau trong đi:trộn "bùng nổ" lát và các thông số thường xuyên trong các chức năng variadic
func main() {
stuff := []string{"baz", "bla"}
foo("bar", stuff...)
}
func foo(s ...string) {
fmt.Println(s)
}
Trong hiểu biết của tôi, lát ... "phát nổ" slice nên nó có thể được sử dụng cho các cuộc gọi hàm đa đối số. Vì vậy, ví dụ trên thực sự nên mở rộng đến foo("bar", "baz", "bla")
.
foo(stuff...)
hoạt động như mong đợi, không có bất ngờ ở đây, nhưng trong ví dụ trên, trình biên dịch than phiền về quá nhiều đối số.
Đây có phải là giới hạn mong muốn không? Tôi đến từ một nền ruby nơi một foo("bar", *stuff)
là hoàn toàn tốt đẹp (và, ít nhất là trong cuốn sách của tôi, điều tương tự), đó là lý do tại sao điều này làm tôi ngạc nhiên.