Go はメソッドを動的に作成できますか?
Go でメソッドを動的に作成できますか?
メソッドはレシーバーを備えた関数であり、メソッドを特定の型に関連付けることができます。 reflect.MakeFunc を使用して関数を動的に作成することは可能ですが、メソッドについてはどうすればよいでしょうか?
答え:
いいえ、Go は動的メソッドの作成をサポートしていません。レシーバーのタイプは、レシーバーで使用できるメソッドのセットを定義します。実行時にこのセットを変更するには、実行時のインターフェイス実装チェックが必要です。
ただし、次の回避策があります:
Reflect パッケージをフォークする:
独自のバージョンのリフレクト パッケージを使用する場合は、型にアタッチされたメソッドを表す値を構築することで、メソッドの作成をシミュレートできます。ただし、これによって型のメソッド セットが実際に変更されるわけではありません。
メソッド ポインターの交換:
Go は仮想メソッド ディスパッチ テーブルを具体的な値に埋め込みませんが、インターフェイス値に存在します。 Reflect.nonEmptyInterface の itab フィールドを操作して、メソッド ポインタを動的に交換できます。ただし、これは Go の内部構造についての深い理解を必要とする複雑な操作です。
以上がGo はメソッドを動的に作成できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











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

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

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

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

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