ホームページ > バックエンド開発 > Golang > リフレクションを使用して Go Struct メソッドを名前で呼び出すにはどうすればよいですか?

リフレクションを使用して Go Struct メソッドを名前で呼び出すにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-24 05:30:14
オリジナル
938 人が閲覧しました

How Can I Call a Go Struct Method by Its Name Using Reflection?

Go で名前による構造体メソッドの呼び出し

クエリは、名前を指定して Go 構造体のメソッドを呼び出すことに関係します。提供されている MethodByName() 関数とは異なり、OP はより直接的なアプローチを想定しています。

リクエストの実装

これを実現するには、次の手順を利用します。

  1. 構造体の値を取得します: を使用します構造体ポインターの値を取得するには、reflect.ValueOf を使用します。
  2. 名前でメソッドを検索します。 MethodByName() を使用して、構造体の値内で目的のメソッドを検索します。
  3. メソッドを呼び出します: Call() を使用して、検出されたメソッドを呼び出し、このメソッドにreflect.Value 引数の空のスライスを渡します。 case.

実装例:

package main

import "fmt"
import "reflect"

type MyStruct struct {}

func (p *MyStruct) MyMethod() {
    fmt.Println("My statement")
}

func main() {
    var s MyStruct
    reflect.ValueOf(&s).MethodByName("MyMethod").Call(nil)
}
ログイン後にコピー

出力:

My statement
ログイン後にコピー

注: MethodByName () 関数は、メソッドの名前を表す文字列引数を受け取ります。

以上がリフレクションを使用して Go Struct メソッドを名前で呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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