面试题答案
一键面试- 函数返回值:
- 该函数
test
的返回值是0
。
- 该函数
- defer语句与函数返回值作用机制分析:
- 在Go语言中,
return
语句并不是原子操作。它实际分为两步:- 第一步,计算返回值。在
func test() int { var i int defer func() { i++ }() return i }
中,当执行到return i
时,会先计算返回值,此时i
的值为0
,这个0
就被确定为返回值。 - 第二步,执行
defer
语句。defer
语句会在函数返回前执行,在这个例子中,defer
中的匿名函数func() { i++ }()
会在返回前执行,i
的值变为1
。但是此时返回值已经在第一步被确定为0
,i
的后续修改并不会影响已经确定的返回值,所以最终函数返回0
。
- 第一步,计算返回值。在
- 在Go语言中,