面试题答案
一键面试- 输出结果: 1
- 原因解释:
- 在Go语言中,
defer
语句会延迟函数的执行,直到包含该defer
语句的函数返回。 - 这里
defer
后面跟着一个匿名函数func() { fmt.Println(i) }
。 - 虽然
defer
语句在i++
之前,但defer
语句中的函数不会立即执行。 - 先执行
i++
,此时i
的值变为1。 - 当
main
函数执行完毕准备返回时,才会执行defer
后面的匿名函数,此时i
的值已经是1,所以输出1。
- 在Go语言中,
defer
语句会延迟函数的执行,直到包含该defer
语句的函数返回。defer
后面跟着一个匿名函数func() { fmt.Println(i) }
。defer
语句在i++
之前,但defer
语句中的函数不会立即执行。i++
,此时i
的值变为1。main
函数执行完毕准备返回时,才会执行defer
后面的匿名函数,此时i
的值已经是1,所以输出1。