计算中的异常处理
Go 语言处理程序运行异常的方法与目前大多数主流开发语言都有所不同,不是使用常见的 try-catch 代码块的方式,而是使用了 panic-defer-recover 机制。
1、Go语言的匿名函数
Go 语言中文支持匿名函数(anonymous function),这是一个高级机制,可以把函数当作一个值并赋值给变量。
package main import ( "fmt" ) func main() { a := func() { fmt.Println("TEST") } a() //调用 func(),函数中打印一次 "TEST" var b func() b = a b() //调用 func(),函数中打印一次 "TEST" }
将一个函数赋值给了变量 a,这是一个匿名函数的基本用法。
由于匿名函数,所以 func 关键字之后没有函数名而是表示函数参数声明的圆括号。由于本例中的函数不需要参数,所以圆括号内不需要任何内容,函数体的花括号内仅调用 fmt.Println 函数输出一个字符串 "TEST"。由于此时变量 a 已经是一个函数类型变量,它的值就是一个函数,所以可以直接用 a() 的形式来调用该函数,即用变量名加上表示函数参数声明的圆括号。
注意:
匿名函数既不需要参数也没有返回值,因此函数类型的变量声明仅写 func() 就可以了,如果有参数或返回值,需要加上相应的内容。
package main import ( "fmt" ) func main() { a := func(s string) string { fmt.Println("收到" + s) return "OK" } a("TEST") var b func(string) string b = a b("nice") }
package main import ( "fmt" ) func main() { a := func(s string) string { fmt.Println("收到" + s) return "OK" } a("TEST") var b func(string) string b = a b("nice") }
missing return at end of function