20、高阶函数和回调函数

1.高阶函数和回调函数的定义

根据Go语言的数据类型特点,可以将一个函数作为另外一个函数的参数

例如:
现在有fun1() , fun2()两个函数,当我们把fun1作为fun2这个函数的参数时。
fun2函数:称之为高阶函数

  • 接收一个函数作为参数的函数,高阶函数的定义

fun1函数:称之为回调函数

  • 作为另一个函数的参数的函数,回调函数的定义
/**
 * @author ly (个人博客:https://www.cnblogs.com/qbbit)
 * @date 2023/5/15  21:18
 * @tags 喜欢就去努力的争取
 */
package main

import "fmt"

func main() {

	// 求两个数的加减乘除运算
	fmt.Printf("%T\n", add)
	fmt.Printf("%T\n", oper)

	// 调用函数
	res := add(1, 2)
	fmt.Println(res)
	res2 := oper(10, 20, add)
	fmt.Println(res2)

	/**
	oper : 高阶函数
	add、sub、mul、div、mod: 回调函数
	*/
	res3 := oper(100, 5, sub)
	fmt.Println(res3)

	res4 := oper(100, 10, mul)
	fmt.Println(res4)

	res5 := oper(100, 20, div)
	fmt.Println(res5)

	res6 := oper(100, 50, mod)
	fmt.Println(res6)

	// 使用匿名函数的方式
	fun1 := func(a, b int) int {
		return a + b
	}

	res7 := oper(10, 20, fun1)
	fmt.Println(res7)

	res8 := oper(100, 200, func(x int, y int) int {
		return x * y
	})
	fmt.Println(res8)

}

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

func sub(a, b int) int {
	return a - b
}

func mul(a, b int) int {
	return a * b
}

func div(a, b int) int {
	return a / b
}

func mod(a, b int) int {
	return a % b
}

func oper(a, b int, fun func(int, int) int) int {
	fmt.Println(a, b, fun)
	return fun(a, b) // 函数的具体回调处
}

posted @   我也有梦想呀  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示