Golang回调函数实例二则

作者: iCaptain | 来源:发表于2017-07-27 09:41 被阅读348次

1.定义

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
</br>

2.机制

  • 定义一个回调函数
  • 提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者
  • 当特定的事件或条件发生时,调用者使用函数指针调用回调函数对事件进行处理
    </br>

例1.这是一个简单的回调例子,调用函数test时,调用真正的实现函数add

 package main

import "fmt"

type Callback func(x, y int) int

// 提供一个接口,让外部去实现
func test(x, y int, callback Callback) int {
    return callback(x, y)
}

// 回调函数的具体实现
func add(x, y int) int {
    return x + y
}

func main() {
    x, y := 1, 2
    fmt.Println(test(x, y, add))
}

</br>

例2.这是一个将字符串转为Int的例子,在转换失败的情况下执行回调函数,输出错误信息

package main

import (
    "strconv"
    "fmt"
)

type Callback func(msg string)

//将字符串转换为int64,如果转换失败调用Callback
func stringToInt(s string, callback Callback) int64 {
    if value, err := strconv.ParseInt(s, 0, 0); err != nil {
        callback(err.Error())
        return 0
    } else {
        return value
    }
}

// 记录日志消息的具体实现
func errLog(msg string) {
    fmt.Println("Convert error: ", msg)
}

func main() {
    fmt.Println(stringToInt("18", errLog))
    fmt.Println(stringToInt("hh", errLog))
}

</br>
通过上面的两个简单例子,相信机智的你已经了解Golang的回调机智咯~

相关文章

  • Golang回调函数实例二则

    1.定义 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被...

  • apply和call语句

    运动框架的应用实例 结合 异步和回调函数 中的 「回调函数2」我们可以试图在回调函数中,用this表示oDiv对象...

  • Node.js 知识点一

    回调函数 回调函数一般作为函数的最后一个参数出现: 堵塞代码实例 非堵塞代码实例 第一个实例在文件读取完后才执行完...

  • 回调demo***

    1.基本函数调用思想 2.回调函数 3.实例

  • laravel框架中容器类简化代码

    //容器类装实例或提供实例的回调函数 class Container { protected $binding...

  • 异步处理

    回调函数处理异步 events 模块处理异步 基础模样 实例

  • Dart UI 库-- CallbackHandle 对象

    原始回调句柄的包装器。 构造函数 使用原始回调句柄创建实例。 只生产值调用CallbackHandle.toRaw...

  • Promise用法总结

    Promise前置储备知识: 函数对象和实例对象(简称对象)同步回调和异步回调(异步回调会将要执行代码块放入队列)...

  • JavaScript函数_08回调函数

    回调函数 回调函数(回调),当我们把某个函数作为参数传递给另一个函数的时候,这个函数就是回调函数 回调函数的基本写...

  • C语言基础知识点

    函数指针与回调函数 1、函数指针:函数指针是指向函数的指针变量,以下实例声明了函数指针变量 p,指向函数 max:...

网友评论

    本文标题:Golang回调函数实例二则

    本文链接:https://www.haomeiwen.com/subject/itoakxtx.html