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

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-24 05:30:14944ブラウズ

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 サイトの他の関連記事を参照してください。

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