ホームページ >バックエンド開発 >Golang >Go で構造体メソッドを名前で動的に呼び出すにはどうすればよいですか?

Go で構造体メソッドを名前で動的に呼び出すにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-22 22:10:14184ブラウズ

How Can I Dynamically Call Struct Methods by Name in Go?

Go で構造体とそのメソッドを名前で呼び出す

構造体を使用する場合、特定のメソッドを呼び出す必要がある場合があります。その名前で動的に。これは、メソッド名が実行時に決定される状況や、さまざまな構造体を操作するコードを一般化したい場合に役立ちます。

他の言語とは異なり、Go はメソッドを呼び出すための単純なメカニズムを提供しません。名前。しかし、反射の力を利用することで、この機能を実現することができます。方法は次のとおりです。

  1. 構造体の値を取得します。
    Reflect.ValueOf(&structName) を使用して、構造体のアドレスを表す Reflect.Value を取得します。
  2. 名前でメソッドを検索:
    使用Value.MethodByName(methodName) を使用して、指定されたメソッドを表す Reflect.Method を取得します。
  3. メソッドを呼び出します:
    最後に、reflect.Method.Call(args) を呼び出して、

たとえば、次の構造体とメソッド:

次のようにこのメソッドを動的に呼び出すことができます:

このコードは「私のステートメント」を出力します。

注: 呼び出そうとしている構造体とメソッドの両方が、現在のパッケージまたはスコープ内で表示され、アクセス可能であることを確認することが重要です。

以上がGo で構造体メソッドを名前で動的に呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。