publish variadic functions. also, spelling
This commit is contained in:
parent
855fde241c
commit
22f6542915
@ -11,7 +11,7 @@ Maps
|
||||
Range
|
||||
Functions
|
||||
Multiple Return Values
|
||||
# Varadic Functions
|
||||
Variadic Functions
|
||||
Closures
|
||||
Recursion
|
||||
# Defer
|
||||
|
@ -3,5 +3,5 @@ $ go run multiple-return-values.go
|
||||
7
|
||||
7
|
||||
|
||||
# Another key aspect of functions in Go is their ability
|
||||
# to form closures, which we'll look at next.
|
||||
# Accepting a variable number of arguments is another nice
|
||||
# feature of Go functions; we'll look at this next.
|
||||
|
@ -25,7 +25,7 @@ func main() {
|
||||
fmt.Println(getRep)
|
||||
fmt.Println(getStr)
|
||||
|
||||
// varadic calls
|
||||
// variadic calls
|
||||
client.Set("foo1", "bar1")
|
||||
client.Set("foo2", "bar2")
|
||||
client.Set("foo3", "bar3")
|
||||
|
@ -1,31 +0,0 @@
|
||||
// Varadic functions can be called with any number of
|
||||
// trailing arguments. This is useful if you don't know
|
||||
// number of arguments that will be needed for a function
|
||||
// ahead of time.
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
// Varadic args are declared with `...type` and
|
||||
// passed in as a slice.
|
||||
func add(nums ...int) int {
|
||||
fmt.Print(nums, " ")
|
||||
total := 0
|
||||
for _, num := range nums {
|
||||
total += num
|
||||
}
|
||||
return total
|
||||
}
|
||||
|
||||
func main() {
|
||||
// Varadic functions can be called in the usual way.
|
||||
fmt.Println(add(1, 2))
|
||||
fmt.Println(add(1, 2, 3))
|
||||
|
||||
// If you already have multiple args in a slice,
|
||||
// apply them to a varadic function using `
|
||||
// func(slice...)`.
|
||||
nums := []int{1, 2, 3, 4}
|
||||
fmt.Println(add(nums...))
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
$ go run varadic-functions.go
|
||||
[1 2] 3
|
||||
[1 2 3] 6
|
||||
[1 2 3 4] 10
|
33
examples/variadic-functions/variadic-functions.go
Normal file
33
examples/variadic-functions/variadic-functions.go
Normal file
@ -0,0 +1,33 @@
|
||||
// [_Variadic functions_](http://en.wikipedia.org/wiki/Variadic_function)
|
||||
// can be called with any number of trailing arguments.
|
||||
// For example, `fmt.Println` is a common variadic
|
||||
// function.
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
// Here's a function that will take an arbitrary number
|
||||
// of `ints` as arguments.
|
||||
func sum(nums ...int) int {
|
||||
fmt.Print(nums, " ")
|
||||
total := 0
|
||||
for _, num := range nums {
|
||||
total += num
|
||||
}
|
||||
return total
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
||||
// Variadic functions can be called in the usual way
|
||||
// with individual arguments.
|
||||
fmt.Println(sum(1, 2))
|
||||
fmt.Println(sum(1, 2, 3))
|
||||
|
||||
// If you already have multiple args in a slice,
|
||||
// apply them to a variadic function using
|
||||
// `func(slice...)` like this.
|
||||
nums := []int{1, 2, 3, 4}
|
||||
fmt.Println(sum(nums...))
|
||||
}
|
7
examples/variadic-functions/variadic-functions.sh
Normal file
7
examples/variadic-functions/variadic-functions.sh
Normal file
@ -0,0 +1,7 @@
|
||||
$ go run variadic-functions.go
|
||||
[1 2] 3
|
||||
[1 2 3] 6
|
||||
[1 2 3 4] 10
|
||||
|
||||
# Another key aspect of functions in Go is their ability
|
||||
# to form closures, which we'll look at next.
|
Loading…
x
Reference in New Issue
Block a user