From dd7a95399bdd6eaa0cd2ed5f22997633a2878afb Mon Sep 17 00:00:00 2001 From: Mark McGranaghan Date: Thu, 20 Sep 2012 22:21:53 -0700 Subject: [PATCH] tweak --- 021-varadic.go | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/021-varadic.go b/021-varadic.go index f764108..d6f993e 100644 --- a/021-varadic.go +++ b/021-varadic.go @@ -1,18 +1,27 @@ -package main // Varadic functions can be called with any number of - // trailing arguments. +package main // Varadic functions can be called with any number of + // trailing arguments. import "fmt" -func add(nums ...int) int { // Varadic args are declared with `...type` and passed in as - for _, num := range nums { // a slice. +func add(nums ...int) int { // Varadic args are declared with `...type` and + fmt.Print(nums, " ") // passed in as a slice. + total := 0 + for _, num := range nums { total += num } return total } func main() { - fmt.Println(add(1, 2)) // Varadic functions can be called in the usual way. - fmt.Println(add(1, 2, 3, 4)) + fmt.Println(add(1, 2)) // Varadic functions can be called in the usual way. + fmt.Println(add(1, 2, 3)) - nums := []int{2, 3, 4, 5} // If you already have multiple args in a `slice`, apply - fmt.Println1(add(1, nums...)) // them to a varadic function using `func(arg, slice...)`. -} + nums := []int{1, 2, 3, 4} // If you already have multiple args in a slice, + fmt.Println(add(nums...)) // apply them to a varadic function using ` +} // func(slice...)`. + +/* +$ go run varadic.go +[1 2] 3 +[1 2 3] 6 +[1 2 3 4] 10 +*/