awesome-patterns/functions/first_class/main.go

33 lines
468 B
Go
Raw Normal View History

2018-01-11 08:19:31 +03:00
package main
import "github.com/davecgh/go-spew/spew"
type Cruncher func(int) int
func mul(n int) int {
return n * 2
}
func add(n int) int {
return n + 100
}
func sub(n int) int {
return n - 1
}
func crunch(nums []int, a ...Cruncher) (rnums []int) {
rnums = append(rnums, nums...)
for _, f := range a {
for i, n := range rnums {
rnums[i] = f(n)
}
}
return
}
func main() {
nums := []int{1, 2, 3, 4, 5, 6}
spew.Dump(crunch(nums, mul, add, sub))
}