2017-05-16 7 views
3

私は、defer-Statementがどのように、なぜ、そしてなぜそれが(コンパイラソースコードで)実装されているのか、知りたいと思います。遅延ステートメントはどこに実装されていますか?

私は延期文を解析し、構文木に

それを構築についてパッケージが見つかりましたが、私は、実行時に延期の実際・実行中interestetdです。 私の推測では、

答えて

5

あなたはまた、より多くの結果を見つけるために、用語「deferreturn」のリポジトリを検索することができ、ここでhttps://github.com/golang/go/blob/d089a6c7187f1ff85277515405ec6c641588a7ff/src/runtime/panic.go#L70

を読み始め、それは「SRC /ランタイム」内のどこかだということ、です。

延期ジャンプのアセンブリhttps://github.com/golang/go/blob/master/src/runtime/asm_amd64.s#L550

+0

最初の外観では右のように見えます。私は今日後で詳しく見ていきます。 –

+0

ありがとうございました、私が探していたもの、 –

関連する問題