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

WBOY
リリース: 2024-02-05 21:39:13
転載
1229 人が閲覧しました

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

質問内容

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

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

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

リーリー

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

funca

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


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


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

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

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

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート