Golang中的高阶函数
Golang中的函数,可以作为函数的参数,传递给另外一个函数,可以作为另一个函数的返回值返回。
Golang中的函数作为参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| package main
import "fmt"
func sayHello(name string) { fmt.Printf("Hello,%s", name) }
func f1(name string, f func(name string)) { f(name) }
func main() { f1("WeiYunfeng", sayHello) }
|
运行结果:
Golang中的函数作为返回值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| package main
import "fmt"
func add(a int, b int) int { return a + b }
func sub(a int, b int) int { return a - b }
func cal(operator string) func(int, int) int { switch operator { case "+": return add case "-": return sub default: return nil } } func main() { ff := cal("+") r := ff(1, 2) fmt.Printf("r: %v\n", r) ff = cal("-") r = ff(2, 1) fmt.Printf("r: %v\n", r) }
|
运行结果: