如下函数:
package main
import "fmt"
func f() (ret int) {
defer func() {
ret++
}()
return ret
}
func main() {
fmt.Println(f())
}
在函数f中,return处初始化了返回值ret为1,最后执行匿名函数时改变返回值ret使其+1,返回值为2,则最后打印结果为2。
做一点改变
package main
import "fmt"
func f() (ret int) {
defer func() {
ret++
}()
return
}
func main() {
fmt.Println(f())
}
改变的使f函数的return处,这样ret没有被显式始化,则ret默认为0,在匿名函数中+1,返回值为1,最后打印结果是1