猿问

关于defer的问题

funf6()int{
variint=0
deferfunc(aint){
fmt.Println("if6:",a)
i=i+5
}(i)
i=1
i++
returni
}
按照改写规则是将return语句分开成两句写,returnxxx会被改写成:返回值=xxx调用defer函数空的return
i=0返回值r=i(i等于0)i=1i++(i等于2)returnr(我觉得应该是0啊)
结果为什么是2呢?
慕哥6287543
浏览 351回答 2
2回答

缥缈止盈

我也是go初学者,我是这样理解的`funcf6()int{//fun==>func你写错了variint=0deferfunc(aint){//延迟调用的参数会立刻生成,但是在上层函数返回前函数都不会被调用fmt.Println("if6:",a)//a=i=0print0i=i+5}(i)i=1i++//i=2returni//return2}`
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答