go语言 回调函数

一.概述

    此处所说的回调函数和java中有些相似,利用回调函数,能够实现多态,反复调用,提高代码的可用性

二.函数的类型

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

//函数也是一种数据类型,通过type给一个函数类型起名
//FuncType它是一个函数类型 函数类型名为FuncType
type FuncType func(int, int) int //没有函数名字,没有{}

func main() {
	var result int
	result = add(1, 1) //传统方式进行调用
	fmt.Println("result=", result)

	// 声明一个函数类型的变量,变量名为FuncType1
	var result1 FuncType
	result1 = add          //是变量就可以赋值
	result = result1(3, 4) //等价于add(3,4)
	fmt.Println("result=", result)

	result1 = minus
	result = result1(62, 42)
	fmt.Println("result=", result)
}

三.回调函数

回调函数 函数有一个参数是函数类型,这个函数就是回调函数

package main

import "fmt"

//定义一个函数类型
type FuncType func(int, int) int

// 实现加法
func add(a, b int) int {
	return a + b
}
func minus(a, b int) int {
	return a - b
}
func multi(a, b int) int {
	return a * b
}
func divide(a, b int) (ret int) {
	ret = a / b
	return
}

// 回调函数 函数有一个参数是函数类型,这个函数就是回调函数
// 计算器,可以进行四则运算
// 多态,多种形态,调用同一个接口,可以实现不同的表现,加减乘除
func Calc(a, b int, ftest FuncType) (result int) {
	fmt.Println("Calc")
	result = ftest(a, b) //此函数没有被实现
	return
}

func main() {
	a := Calc(1, 3, divide)
	fmt.Printf("result=%d\n", a)
}

猜你喜欢

转载自blog.csdn.net/m0_38068812/article/details/81879579