小编杨寒冬*_*杨寒冬的帖子

使用 defer 时在函数中返回值

我在使用关于返回值的“延迟”时遇到了一些问题。我尝试以不同的方式运行一个测试函数(只有 i 的定义不同),但结果不同。所以,我对不同的返回值感到困惑。这是问题所在:

功能一:

package main
import "fmt"
func main() {
    fmt.Println("a return:", a()) // return value: 0
}

func a() int {
    var i int
    defer func() {
        i++
        fmt.Println("a defer1:", i) // print " a defer1: 1"
    }()
    return i
}
Run Code Online (Sandbox Code Playgroud)

返回值:

a defer1: 1
a return: 0
Run Code Online (Sandbox Code Playgroud)

功能二:

package main
import "fmt"

func main() {
    fmt.Println("a return:", a()) // return value: 1
}

func a() (i int) {
    defer func() {
        i++
        fmt.Println("a defer1:", i) // print …
Run Code Online (Sandbox Code Playgroud)

go

4
推荐指数
1
解决办法
589
查看次数

标签 统计

go ×1