个人网站推广手段有哪些,商城网站模板免费下载,网站栏目页如何做,前端开发面试题先给出最终结论#xff1a; 执行return语句 - 执行defer函数 - 函数返回
这里可能会有一个疑问#xff0c; 执行return语句和函数返回难道不是一回事?
Golang语言中函数的return不是原子操作#xff0c;而是分为了两步#xff1a;
返回值赋值真正函数返回
Gol…先给出最终结论 执行return语句 - 执行defer函数 - 函数返回
这里可能会有一个疑问 执行return语句和函数返回难道不是一回事?
Golang语言中函数的return不是原子操作而是分为了两步
返回值赋值真正函数返回
Golang语言中defer函数是在return的两步之间。
对于这个的理解可以看下面两个示例
func main() {fmt.Println(test1()) // 1fmt.Println(test2()) // 2
}// 返回值 无变量名
func test1() int {var r intdefer func() {rfmt.Println(defer r:, r) // 2}fmt.Println(return r:, r) // 1return r
}// 返回值 有变量名
func test2() (r int) {defer func() {rfmt.Println(defer r:, r) // 2}fmt.Println(return r:, r) // 1return r
}