go-defer
源码
// A _defer holds an entry on the list of deferred calls.
// If you add a field here, add code to clear it in freedefer.
type _defer struct {
siz int32 //是参数和结果的内存大小;
started bool
sp uintptr // sp at time of defer
pc uintptr //sp 和 pc 分别代表栈指针和调用方的程序计数器;
fn *funcval //fn 是 defer 关键字中传入的函数;
_panic *_panic // panic that is running defer //_panic 是触发延迟调用的结构体,可能为空;
link *_defer
}预计算参数
编译
defer执行
最后更新于