Go语言之匿名函数

时间:2021-03-19 04:56:02

匿名函数和字面量函数一样,

凡是可以使用字面量函数的地方,都可以用匿名函数代替。

这个和js中的匿名函数差不多吧。

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() {
	defer func() {
		if err := recover(); err!= nil {
			fmt.Println(err)
		}
	}()

	fmt.Println(sum(1, 2))
	re := doinput(func(x, y int) int {
		return x + y
	}, 1, 2)
	fmt.Printf("%d\n", re)
	opFunc := wrap("add")
	re = opFunc(2, 3)
	fmt.Printf("%d\n", re)

}

  Go语言之匿名函数