小编Lar*_*tet的帖子

为什么在以下带有defer的golang代码示例中得到0和1

调用defer对以两种不同方式声明的变量产生不同的结果

package main

import (
    "fmt"
)

func c(i int) int {
    defer func() { i++ }()
    return i
}

func c1() (i int) {
    defer func() { i++ }()
    return i
}

func c2() (i int) {
    defer func() { i++ }()
    return 2
}

func main() {
    fmt.Println(c(0)) // Prints 0
    fmt.Println(c1()) // Prints 1
    fmt.Println(c2()) // Prints 3 Thank you icza
}
Run Code Online (Sandbox Code Playgroud)

https://play.golang.org/p/gfnnCZ--DkH

go deferred

8
推荐指数
1
解决办法
93
查看次数

标签 统计

deferred ×1

go ×1