14.آموزش GO با مثال (توابع متغیر)

توابع متغیر میتونن با هر تعداد آرگومانی فراخوانی بشن. برای مثال،fmt.Printlnیک تابع متغیر رایج است.

package main
import "fmt"

در اینجا یک تابع داریم که مقدار دلخواهی int را به عنوان آرگومان دریافت میکند.

func sum(nums ...int) {
    fmt.Print(nums, " ")
    total := 0
    for _, num := range nums {
        total += num
    }
    fmt.Println(total)
}
func main() {

توابع متغیر به طور معمول با آرگومان های تکی فراخوانی میشود.

   sum(1, 2)
    sum(1, 2, 3)

اگر شما چندین آرگومان در یک برش دارید، میتونید اونها رو در یک تابع متغیر شبیه (...func(slice اعمال کنید.

   nums := []int{1, 2, 3, 4}
    sum(nums...)
}

اجرای این برنامه

$ go run variadic-functions.go 
[1 2] 3
[1 2 3] 6
[1 2 3 4] 10

یکی دیگر از جنبه های کلیدی توابع در گو توانایی آنها در ایجاد بستار است، که در آینده آن را مورد بررسی قرار میدهیم.

<<چند بازگشتی مقادیر------------------------------------تابع بستار>>