[解決済み] Goでネストした関数宣言を許可しないことで軽減される問題は何ですか?
2022-10-06 15:11:10
質問
ラムダは期待通りに動作します。
func main() {
inc := func(x int) int { return x+1; }
}
ただし、宣言の中に次のような宣言をすることは許されません。
func main() {
func inc(x int) int { return x+1; }
}
ネストされた関数が許されない理由は何ですか?
どのように解決するのですか?
この明らかな機能が許可されていない理由は3つあると思います。
- コンパイラを少し複雑にするでしょう。 今のところ、コンパイラはすべての関数がトップレベルにあることを知っています。
- 何かをリファクタリングして、誤っていくつかの関数をネストしてしまうというような、新しいクラスのプログラマエラーが発生するでしょう。
- 関数とクロージャのために異なる構文を持つことは、良いことです。 クロージャを作ることは、関数を作ることよりも潜在的に高価なので、それを行っていることを知るべきです。
これらは私の意見であり、言語設計者からの公式な発表を見たわけではありません。
関連
-
[解決済み] 与えられた名前と引数の型に一致する関数がない
-
[解決済み] Pythonの変数名や関数名の命名規則について教えてください。
-
[解決済み] 関数のソースコードを見るにはどうしたらいいですか?
-
[解決済み] パラメータと戻り値におけるポインタと値の比較
-
[解決済み】関数の前のエクスクラメーションマークは何をするのですか?
-
[解決済み】Goのタグはどのような用途に使われますか?
-
[解決済み】init()関数はいつ実行されるのですか?
-
[解決済み】関数宣言の構文:関数名の前に括弧でくくられたもの
-
[解決済み】関数定義のためのconstの正しい使い方
-
[解決済み】C++のforward宣言とは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】MIPSの関数(プロシージャ)について
-
[解決済み] MATLAB関数におけるオプションの引数
-
[解決済み] Haskellでfilter関数を使うにはどうしたらいいですか?
-
[解決済み] オプションの呼び出し変数を持つ関数を作成する
-
[解決済み] MATLABを使用して、ステップ入力または単位ランプに対する閉ループシステムの応答をプロットしてください。
-
[解決済み】関数はパラメータとして渡すことができますか?
-
[解決済み] バリューレシーバー vs. ポインターレシーバー
-
[解決済み] Clojureで関数の引数にデフォルト値を作成する方法
-
[解決済み] kotlin.Resultはなぜ戻り値として使えないのですか?
-
[解決済み] 再帰的関数の仕組みを理解する