Go语言基础之高阶函数

Go语言基础之高阶函数

高阶函数分为函数作为参数和函数作为返回值两部分。

一、函数作为参数

函数可以作为参数:

func add(x, y int) int {
    return x + y
}
func calc(x, y int, op func(int, int) int) int {
    return op(x, y)
}
func main() {
    ret2 := calc(10, 20, add)
    fmt.Println(ret2) //30
}

二、函数作为返回值

函数也可以作为返回值:

func do(s string) (func(int, int) int, error) {
    switch s {
    case "+":
        return add, nil
    case "-":
        return sub, nil
    default:
        err := errors.New("无法识别的操作符")
        return nil, err
    }
}

三、函数放入切片

func main{
    type typeFunc func(int, int) int
	var name []typeFunc = []typeFunc{add1}
	for _, key := range name {
		fmt.Println(key(2, 4)) // 6
	}
}
func add1(x, y int) int {
	return x + y
}

四、总结

  1. 函数可以当作函数参数传参
  2. 函数可以作为返回值
posted @ 2021-10-16 16:25  RandySun  阅读(165)  评论(0编辑  收藏  举报