go 语言函数高级用法

函数作为参数

可以把函数作为另外一个函数的参数 :

package main

func add(a int, b int) int {
	return a + b
}

// add 函数作为 addDouble 函数的参数
func addDouble(a int, b int, f func(int, int) int) int {
	return f(a, b) * 2
}

func main() {
	res := addDouble(1, 2, add)
	println(res)
}

函数作为返回值

函数也可以作为一个函数的返回值 :

package main

func add(a int, b int) int {
	return a + b
}

// add 函数将作为 giveMeAFunc 函数的返回值
func giveMeAFunc() func(int, int) int {
	return add
}

func main() {
	funRun := giveMeAFunc()
	println(funRun(1, 2))
}