Golang回调函数实例二则

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的回调机智咯~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,455评论 0 4
  • ———————————————回答好下面的足够了---------------------------------...
    恒爱DE问候阅读 5,684评论 0 4
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,273评论 25 709
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,327评论 30 472
  • 有人说,“没有教不好的学生,只有不会教的老师”。 的确每个孩子都有独一无二的性格,与众不同的特长,他的兴趣决定着他...
    xxt1946阅读 4,451评论 0 1