Golang回调函数
定义#
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。
回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
机制#
定义一个回调函数
提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者
当特定的事件或条件发生时,调用者使用函数指针调用回调函数对事件进行处理
例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))
}
总结#
定义一个callback 函数类型的type
接着在函数中传入callback函数
在需要callback函数时进行调用
作者:ydssx7
出处:https://www.cnblogs.com/ydssx7/p/17300346.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?