f1()、f2()、f3() 函数分别返回什么?

发布时间 2023-03-22 21:11:03作者: 易先讯
func f1() (r int) {
	defer func() {
		r++
	}()
	return 0
}


func f2() (r int) {
	t := 5
	defer func() {
		t = t + 5
	}()
	return t
}


func f3() (r int) {
	defer func(r int) {
		r = r + 5
	}(r)
	return 1
}

 

as:

 

  • f1() =1,return 把r设成0,然后defer把r改为1 ;
  • f2() =5,return 把r设成5,然后defer改的是t,不影响返回值 ;
  • f3() =5,return 把r设成1,然后defer把r改为r+5,但是用的r是defer设定时的r,=0;
  • (靠,是1,r+5的r不是外面的r)
  • f(3)defer内部的r非返回值r