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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章