本文介绍: 【Go面试向】defer与time.sleep初探 面试官:请你用defer与time.sleep写一个计算函数运行时间的程序,你会怎么写?
【Go面试向】defer与time.sleep初探
请大家看下面这段代码,看运行结果会出现什么,为什么?
问题
demo
所以答案为:
运行结果
分析
这里的关键点在于为什么时间差
为0
,也就是说为什么时间差
这个defer
语句没有被time.sleep
所影响?进一步分析,就是查看start
的赋值时机在哪?是在一开始调用defer
就赋值,还是说在函数结束后给defer
中的start
赋值,从而造成结果的不同。
带着这个问题,不妨来debug一下,看一下函数语句的执行顺序。
设置断点
要想看一下start
的赋值时机,设置断点在出现start
变量前面即可。
设置好断点后,开始进行debug
debug查看
step1
step2
step3
step4
step5
step6
探讨
defer + 输出语句
defer + 匿名函数
总结
扩展
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。