Golang回调函数实例二则

Posted Golang语言社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang回调函数实例二则相关的知识,希望对你有一定的参考价值。

共 1615 字,阅读需 4 分钟

1.定义

2.机制

  • 定义一个回调函数

  • 提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者

  • 当特定的事件或条件发生时,调用者使用函数指针调用回调函数对事件进行处理

例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))
}

例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))
}

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

以上是关于Golang回调函数实例二则的主要内容,如果未能解决你的问题,请参考以下文章

片段上下文不是回调实例

Golang中函数结构体,将函数转换为接口

golang中的EnumChildWindows回调函数

golang goroutine例子[golang并发代码片段]

OpenIM原创C/C++调用golang函数,golang回调C/C++函数

golang代码片段(摘抄)