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