码迷,mamicode.com
首页 > 其他好文 > 详细

go defer看到你头晕的操作

时间:2020-04-06 15:15:14      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:语言   存在   code   第一步   挑战   之间   执行   lan   玩法   

defer的执行时机

要理解defer的玩法,就要知道他的执行时机,他的执行流程是这样的:

go 语言中函数return 不是原子性的,他是分两步的
第一步 :返回值赋值
defer 执行
第二步 :真正的return 返回
函数中如果存在 defer 那么defer执行的时机是在第一步与第二步之间

看到这里,我们一起来做几个demo

接受挑战?如果你已经很熟悉defer

func f1() int {
	x := 5 
	defer func() {
		x++ 
	}()
	return x 
}

func f2() (x int) { 
	defer func() {
		x++   
	}()
	return 5 
}

func f3() (y int) { 
	x := 5 
	defer func() {
		x++ 
	}()
	return x 
}

func f4() (x int) { 
	defer func(x int) { 
		x++ 
	}(x) 
	return 5 
}

func f5() (x int)  {
	defer func (x int) int  {
		x++
		return x
	}(x)
	return 5 
}

func f6()(x int)  {
	defer func (x *int)  {
		(*x)++
	}(&x)
	return 5 
}

结语

所以,大家懂了吗 ?




不懂的话,那就看我下一篇defer的解答

go defer看到你头晕的操作

标签:语言   存在   code   第一步   挑战   之间   执行   lan   玩法   

原文地址:https://www.cnblogs.com/issac-fan/p/defer_upper_part.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!