Go语言defer语句

defer 语句将函数执行推迟到调用函数(包含函数)退出。函数调用参数还是立马求值,只是执行推迟而已。

1
2
3
4
5
6
7
8
9
package main

import "fmt"

func main() {
    defer fmt.Println("world")

    fmt.Println("hello")
}

对,就是这么简单!

defer栈

与函数调用类似,推迟执行的函数调用也被推到一个 。当函数返回时,这些被推迟执行的函数调用将被执行,以 后进先出last in first out )的顺序。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
package main

import "fmt"

func main() {
    fmt.Println("counting")

    for i := 0; i < 10; i++ {
        defer fmt.Println(i)
    }

    fmt.Println("done")
}

【小菜学Go语言】系列文章首发于公众号【小菜学编程】,敬请关注:

【小菜学Go语言】系列文章首发于公众号【小菜学编程】,敬请关注: