面试题答案
一键面试- 执行顺序:
- 当函数C执行完毕,会先执行函数C中的defer语句。
- 接着函数B执行完毕,执行函数B中的defer语句。
- 最后函数A执行完毕,执行函数A中的defer语句。
- 原因:
defer
语句的特点是,将其后面跟随的语句延迟到包含该defer
语句的函数即将返回时才执行。在这种函数调用链中,函数C先执行完,所以它的defer
语句会最先到执行时机;然后函数B执行完,其defer
语句到执行时机;最后函数A执行完,执行其defer
语句。这就像栈的操作,先入后出,defer
语句在函数执行过程中被“压入栈”,函数结束时按顺序“弹出栈”执行。