`

Go回调函数示例

 
阅读更多

http://golanghome.com/post/103

原博客地址:http://my.oschina.net/kuerant/blog/202703

package main

import (
    "fmt"
    "strconv"
)

//声明一个saveLog类型,这个类型其实表示一个函数定义
type saveLog func(msg string)

//这个函数的第二个参数是一个函数
//这个函数将一个字符串转换为Int类型,如果失败了,则返回0,并输出错误。
func stringToInt(s string, log saveLog) int64 {
    if value, err := strconv.ParseInt(s, 0, 0); err != nil {
        log(err.Error())
        return 0
    } else {
        return value
    }
}

//记录日志的函数实现
func myLog(msg string) {
    fmt.Println("Find error:", msg)
}

//在调用第二个stringToInt的时候会发生运行时的错误输出
func main() {
    stringToInt("123", myLog)
    stringToInt("s", myLog)
}

 

 

运行结果为:

$ go build func_callback.go
$ ./func_callback
Find error: strconv.ParseInt: parsing "s": invalid syntax

分享到:
评论

相关推荐

    Javascript中的回调函数和匿名函数的回调示例介绍

    以下是一个简单的回调函数示例: ```javascript function callback() { alert("帮我去快递吧"); } function goShopping(a, fun) { alert("我去shopping了"); if (a ) { fun(); } } goShopping(9, callback);...

    asynchttpclient:Golang异步http客户端使用回调

    下面将详细解释异步HTTP客户端的基本概念、工作原理以及如何在Golang中使用回调函数。 **异步HTTP客户端的工作原理** 异步HTTP客户端的核心思想是将HTTP请求与等待响应的过程解耦。当发起一个请求时,客户端并不会...

    go代码-匿名函数示例1

    匿名函数在Go中有着广泛的应用,例如在回调、事件处理、延迟执行等方面。它们允许我们编写更简洁、更灵活的代码,减少了定义单独函数的必要,尤其是在只需要一次或临时使用的场景下。同时,由于闭包特性,匿名函数...

    go语言遍历文件夹示例

    // filepath.Walk() 的第一个参数是要遍历的路径,第二个参数是一个回调函数,该函数会在遍历到每个文件或目录时被调用。 // 这个回调函数接受三个参数:当前路径、文件信息(os.FileInfo)和错误(如果有的话)。...

    Go-gohttp支持异步请求的Go的HTTP客户端

    2. **回调函数**:用户可以定义自己的回调函数,当每个请求完成时,无论是成功还是失败,都会调用这些函数。这使得错误处理和结果处理更加灵活。 3. **超时控制**:对于每个请求,`gohttp`允许设置超时限制,防止...

    Go-CEF2go是一个用于GO语言基于HTML5的GUI工具箱

    你可以注册回调函数来处理这些事件,实现对用户操作的响应。 6. **内存管理和线程安全**:由于CEF在C++中运行,因此需要注意线程安全问题和内存管理。Go-CEF2go提供了一些工具和指导,帮助你在Go中正确地管理这些...

    20120905_go语言和libevent的并发(timer测试)1

    在给定的libevent C代码示例中,`timeout_cb`函数是一个回调函数,当定时器触发时会被调用。它使用`evutil_timersub`计算时间差,并打印出事件触发的时间间隔。`setParam`函数用于设置事件描述结构体的参数,包括...

    Golang 各种Demo

    这在编写回调函数和异步操作时非常有用。 5. **函数多个返回值**: Go语言允许函数返回多个值,这是一种强大的特性,使得错误处理更加优雅,也可以在单个函数中返回多个结果。 6. **方法是特殊的函数**: 在Go中...

    Go-eager一个golang实现支持热更新的配置解析库

    更重要的是,当配置文件被外部编辑并保存时,Go-eager会监听文件系统事件,一旦检测到文件变更,就会调用预定义的回调函数,以处理新的配置内容。 Go-eager可能支持多种格式的配置文件,如JSON、YAML、TOML等,这取...

    Go-kingpin-一个Go(golang)命令行和flag解析器支持子命令

    Kingpin还支持自定义帮助和错误消息,以及命令的回调函数,这样我们可以在用户执行命令时执行相应的操作。例如,为`run`命令添加回调函数: ```go runCmd.Action(func() error { fmt.Printf("正在监听端口 %d...\n...

    20120822_用go语言遍历文件夹1

    回调函数会为每个文件或目录调用,其中 `path` 参数是当前处理的文件或目录的完整路径,`f` 是 `os.FileInfo` 类型的接口,提供了关于文件的信息,如是否为目录、名称、大小等,`err` 如果在访问路径时出现错误则被...

    Go-gocron-使用Go语言开发的轻量级定时任务集中调度和管理系统

    7. **钩子函数**:可以注册回调函数,比如在任务执行前后执行特定操作: ```go gocron.Before(myTask, func() { fmt.Println("Task is about to start!") }) gocron.After(myTask, func() { fmt.Println("Task...

    golang支付合集(包括微信支付,支付宝,)

    在IT行业中,Go语言(Golang)以其简洁的语法、高效的性能和强大的并发能力受到了许多开发者,特别是后端开发者的青睐。"golang支付合集(包括微信支付,支付宝,)"是一个专为Go语言开发者设计的支付集成库,旨在...

    Go-GoMock是Go编程语言的一个模拟框架

    - **回调函数**: 支持设置回调函数,允许在模拟方法被调用时执行自定义逻辑。 4. **集成到测试框架** - GoMock可以与标准库`testing`无缝集成,也可以配合其他第三方测试框架如`go-testdeep`,增强测试能力。 5...

    钉钉企业应用Demo(golang版)

    Golang,又称Go语言,是由Google开发的一种静态类型的、编译式的、并发的、垃圾回收的、C风格的编程语言。Golang以其简洁的语法、高效的性能和内置的并发支持,成为构建网络服务和后台应用的理想选择。在这个Demo中...

    Learning_Functional_Programming_in_Go.rar

    闭包允许函数访问并操作在其定义范围内但不在其作用域内的变量,这在实现函数工厂、回调函数和异步操作时非常有用。 `Learning Functional Programming in Go_Code.zip`这个压缩子文件可能包含了一些示例代码,供...

    go语言实现的简单搜索引擎demo,使用了redis,colly,gin-gonic等技术

    再者,`Colly` 是一个强大的Go语言爬虫框架,它允许开发者轻松地构建多线程爬虫,支持限制请求速度、处理HTML、JSON等数据格式,以及实现回调函数进行数据处理。在搜索引擎的实现中,Colly可能是用来爬取互联网上的...

    开源项目-muja-go-exit.zip

    2. **示例代码**:为了帮助用户更好地理解和使用这个库,可能包含了一些示例程序,展示了如何注册退出回调函数,以及如何在程序中使用这个库来确保优雅退出。 3. **测试文件**:为了确保代码的正确性和稳定性,...

    go-prompt:提示示例项目

    - 自定义输入处理:`go-prompt`提供了一个回调函数,你可以在这个函数中处理用户的输入,比如进行验证、调用API、执行其他业务逻辑等。 - 自动补全:`go-prompt`支持自定义自动补全函数,你可以根据用户的输入提供...

Global site tag (gtag.js) - Google Analytics