publish variadic functions. also, spelling
This commit is contained in:
parent
855fde241c
commit
22f6542915
@ -11,7 +11,7 @@ Maps
|
|||||||
Range
|
Range
|
||||||
Functions
|
Functions
|
||||||
Multiple Return Values
|
Multiple Return Values
|
||||||
# Varadic Functions
|
Variadic Functions
|
||||||
Closures
|
Closures
|
||||||
Recursion
|
Recursion
|
||||||
# Defer
|
# Defer
|
||||||
|
@ -3,5 +3,5 @@ $ go run multiple-return-values.go
|
|||||||
7
|
7
|
||||||
7
|
7
|
||||||
|
|
||||||
# Another key aspect of functions in Go is their ability
|
# Accepting a variable number of arguments is another nice
|
||||||
# to form closures, which we'll look at next.
|
# feature of Go functions; we'll look at this next.
|
||||||
|
@ -25,7 +25,7 @@ func main() {
|
|||||||
fmt.Println(getRep)
|
fmt.Println(getRep)
|
||||||
fmt.Println(getStr)
|
fmt.Println(getStr)
|
||||||
|
|
||||||
// varadic calls
|
// variadic calls
|
||||||
client.Set("foo1", "bar1")
|
client.Set("foo1", "bar1")
|
||||||
client.Set("foo2", "bar2")
|
client.Set("foo2", "bar2")
|
||||||
client.Set("foo3", "bar3")
|
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