Go 延迟函数调用
例子
延迟函数调用的目的finally与Java等语言中的块类似:它们确保在外部函数返回时将执行某些函数,而不管是否发生错误或在多次返回的情况下命中哪个return语句。这对于清理必须关闭的资源(如网络连接或文件指针)很有用。该defer关键字表示递延函数调用时,同样go的关键字发起新的goroutine。与go调用一样,函数参数会立即求值,但与go调用不同的是,延迟函数不会并发执行。
func MyFunc() {
conn := GetConnection() //某种必须关闭的连接。
defer conn.Close() //无论如何,都会在MyFunc返回时执行。
//做一些事情...
if someCondition {
return //conn.Close()将被调用
}
//做更多的事情
}//隐式返回-conn.Close()仍将被调用注意使用而不是-你不仅仅是传入一个函数,你还推迟了一个完整的函数调用,包括它的参数。多个函数调用可以在同一个外部函数中延迟,并且每个调用都会以相反的顺序执行一次。你也可以推迟关闭——只是不要忘记括号!conn.Close()conn.Close
defer func(){
//做一些清理
}()
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练