go 回调函数

package main

import "fmt"

// go 回调函数
func main() {
    /*
        高阶函数:
               根据go语言函数的数据类型的特点,可以将函数作为另一个函数的参数
               fun1()
               fun2()
        将fun1函数作为fun2函数的参数:
            fun2函数:高阶函数
                 接受一个函数作为参数的参数,叫做高阶函数
            fun1函数:回调函数
                 作为另一个函数的参数的函数,叫回调函数
    */

    fmt.Printf("%T\n", add)  //func(int, int) int
    fmt.Printf("%T\n", oper) //func(int, int, func(int, int) int) int

    res1 := add(1, 2)
    fmt.Println(res1) // 3

    res2 := oper(1, 2, add)
    fmt.Println(res2) // 3
}

//类型: func (int,int)int
func add(a, b int) int {
    return a + b
}

//类型: func(int,int,func(int,int)int)int
func oper(m, n int, fun func(int, int) int) int {
    //res := fun(1, 2)
    //return res
    return fun(1, 2)
}

发表评论

您的电子邮箱地址不会被公开。