Go return和defer的函数的小问题

如下函数:

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

猜你喜欢

转载自blog.csdn.net/weixin_43249914/article/details/100902375