Golang の関数内にネストされたクラスは存在できますか?
Nov 04, 2024 pm 02:56 PMGolang の関数内にネストされたクラスは存在できますか?
Golang では、関数内での構造体のネストは許可されますが、他の関数内での関数のネストは許可されません (例外を除く)。ラムダ関数)。この制限により、Golang の関数内でネストされたクラスを定義できるかどうかという疑問が生じます。
次の例を考えてみましょう。
<code class="go">func f() { // Nested struct Cls within f type Cls struct { // ... } // Attempt to bind foo to Cls fails func (c *Cls) foo() { // ... } }</code>
この場合、foo 関数をバインドしようとします。ネストされたクラス Cls は失敗します。関数内でクラスが縮小されていないことを考えると、これは驚くべきことかもしれません。
関数リテラルによる救済
Golang では、他の関数内で関数をネストすることは許可されていませんが、関数リテラルを使用した回避策です:
<code class="go">func f() { foo := func(s string) { fmt.Println(s) } foo("Hello World!") }</code>
ここでは、関数型の変数 foo を作成し、別の関数 f 内で宣言します。 「外側」関数 f を呼び出すと、「Hello World!」が出力されます。
このソリューションにより、異なるメカニズムを使用しているにもかかわらず、関数内のネストされたクラスと同様の動作を実現できます。
以上がGolang の関数内にネストされたクラスは存在できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか?

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか?

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は?

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか?

GOの実際のパフォーマンスを正確に反映するベンチマークを作成するにはどうすればよいですか?
