Go语言中的匿名函数可以看做函数字面量,所有直接使用函数类型变量的地方都可以由匿名函数代替。匿名函数可以直接给函数变量赋值,可以当做实参,也可以作为返回值,还可以直接调用。
package main
import "fmt"
/*
匿名函数用作函数变量,可以当做形参传入
*/
var sum = func(a,b int) int{
return a+b
}
func doinput(f func(int, int) int, a,b int) int{
return f(a,b)
}
/*
匿名函数作为返回值
*/
func wrap(op string) func(int,int) int{
switch op {
case "add":
return func(a,b int) int{
return a+b
}
case "sub":
return func(a,b int) int{
return a-b
}
default:
return nil
}
}
func main() {
res1 := sum(1, 2)
res2 := doinput(sum, 1, 2)
func1 := wrap("sub")
res3 := func1(1, 2)
fmt.Println(res1, "--", res2)
fmt.Println(res3)
}