go - defer 语句在哪里实现?

标签 go compiler-construction

我想知道 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/

相关文章:

c++ - 如何用 C/++ 编写一个简单的编译器?

python - 避免 python 设置时间

compiler-construction - 使用 LLVM Alias 和 IFunc 功能的任何实际示例?

go - 如何在不阅读的情况下检查 channel 是否关闭?

go - 在 Go 中要求 HTTP Basic Auth 的惯用方式?

debugging - 如何在 GoLand 中设置调试?

java - 面向 Java、.NET 或 Ruby 的 Smalltalk 编译器

go - 如何使用 GORM 检查 CRUD 操作中的错误?

api - 客户端去: parse kubernetes json files to k8s structures

compiler-construction - 是否可以使用 JVM 字节码显式释放内存?