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

猜你喜欢

转载自kenkao.iteye.com/blog/2237233
今日推荐