我想知道 defer-Statement 的工作原理和原因,以及它的实现位置(在编译器源代码中)。
我找到了关于解析 defer-Statement 并在语法树中构建它的包
但我对运行时延迟的实际执行很感兴趣。 我的猜测是,它位于“src/runtime”中的某个地方
最佳答案
从这里开始阅读 https://github.com/golang/go/blob/d089a6c7187f1ff85277515405ec6c641588a7ff/src/runtime/panic.go#L70
您还可以在存储库中搜索术语“deferreturn”以查找更多结果。
延迟跳转的程序集在这里 https://github.com/golang/go/blob/master/src/runtime/asm_amd64.s#L550
关于go - defer 语句在哪里实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44010453/