يمكن استدعاء الدوال متغيرة المعاملات بأي عدد من المعاملات المتتابعة. على سبيل المثال، fmt.Println هي دالة متغيرة المعاملات شائعة الاستخدام.
package main
import "fmt"
هذه دالة تأخذ عدداً اختيارياً من الأعداد الصحيحة (int) كمعاملات.
func sum(nums ...int) {
fmt.Print(nums, " ")
total := 0
داخل الدالة، نوع nums يكافئ الشريحة []int. يمكننا استدعاء len(nums)، والتكرار عبرها باستخدام range إلخ.
for _, num := range nums {
total += num
}
fmt.Println(total)
}
func main() {
يمكن استدعاء الدوال متغيرة المعاملات بالطريقة المعتادة مع تمرير معاملات فردية.
sum(1, 2)
sum(1, 2, 3)
إذا كان لديك بالفعل عدة معاملات في شريحة، قم بتمريرها للدالة متغيرة المعاملات باستخدام slice... هكذا.
nums := []int{1, 2, 3, 4}
sum(nums...)
}
جانب رئيسي آخر للدوال في Go هو قدرتها على تكوين “الإغلاقات” (closures)، وهو ما سننظر فيه في الدرس القادم.
تشغيل البرنامج:
$ go run variadic-functions.go
[1 2] 3
[1 2 3] 6
[1 2 3 4] 10 المثال التالي: الإغلاقات (Closures).