小编Jam*_*Shi的帖子

golang defer语句是在return语句之前还是之后执行?

我有一个关于golang延迟的问题:golang延迟语句是在return语句之前还是之后执行?

我已经阅读Defer_statements。但是我没有答案。

我做了一个简单的测试:

func test1() (x int) {
    defer fmt.Printf("in defer: x = %d\n", x)

    x = 7
    return 9
}

func test2() (x int) {
    defer func() {
        fmt.Printf("in defer: x = %d\n", x)
    }()

    x = 7
    return 9
}

func test3() (x int) {
    x = 7
    defer fmt.Printf("in defer: x = %d\n", x)
    return 9
}

func main() {
    fmt.Println("test1")
    fmt.Printf("in main: x = %d\n", test1())
    fmt.Println("test2")
    fmt.Printf("in main: x = %d\n", test2()) …
Run Code Online (Sandbox Code Playgroud)

go

5
推荐指数
4
解决办法
1808
查看次数

标签 统计

go ×1