三个关键字
defer:在函数中,经常要打开资源(如:文件打开,数据库连接等),为了在函数执行后,及时释放资源,go的设计者提供defer(延时机制)
panic:内置函数,接收一个interface{}类型的值(也就是任何值)作为参数,可接收error类型的变量,输出错误信息,并退出程序。
errors.New("错误说明"):返回一个error类型的值,表示一个错误
recover:
defer的单独使用
package main import ( "fmt" ) func deferTest() int{ defer fmt.Println("aaaaaaaaaaaaaaaaa") // 先不执行,知道函数执行完成后执行该语句;如果前面有一语句为打开数据库,那么我们可以立刻在该语句后使用defer关闭数据库,避免后续忘记关闭 fmt.Println("bbbbbbbbbbbbbbbbb") return 2 } func main(){ fmt.Println("deferTest:",deferTest()) }
defer 关键字修饰的语句会被压入一个栈,且不会执行该语句;当函数执行完成后,按照先进后出的方式,执行defer压入栈中的语句。
因此执行结果如下:
bbbbbbbbbbbbbbbbb aaaaaaaaaaaaaaaaa deferTest: 2