ホームページ >バックエンド開発 >Golang >Go のコンパイラは入れ子になった関数をどのように処理しますか?

Go のコンパイラは入れ子になった関数をどのように処理しますか?

WBOY
WBOY転載
2024-02-05 21:39:131250ブラウズ

Go 的编译器如何处理嵌套函数?

質問内容

goで入れ子関数を書く場合、コンパイラはどのように処理するのでしょうか?それは別の関数になってコードの外に配置されるのでしょうか、それとも親関数が呼び出されたときに再作成されますか?

###例えば:### リーリー

この関数は次のようにコンパイルされていますか?

リーリー

それとも、書かれたとおりにコンパイルされるのでしょうか。つまり、

funca

が呼び出されるたびに、funcb の定義に新しいメモリが割り当てられるということですか? #正解


ネストされた関数は 1 回コンパイルされます。


FuncB は周囲のスコープ内の変数をクローズしないため、FuncA はヒープ メモリを割り当てません。

FuncB が周囲のスコープ内の変数を閉じると、それらの変数はヒープ上に割り当てられます。関数自体は一度コンパイルされます。

以上がGo のコンパイラは入れ子になった関数をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。