Go でリフレクションを使用してカスタム型を検査するには、「reflect」パッケージをインポートします。型の値を取得するには、reflect.ValueOf() を使用します。型のreflect.Typeを取得するには、reflect.TypeOf()を使用します。 NumField() と Field() を使用してフィールドを取得します。 NumMethod() と Method() を使用してパブリック メソッドを取得します。 FieldByName() を使用してフィールド値を取得します。 Call() を使用してパブリック メソッドを呼び出します。
Golang でリフレクションを使用してカスタム型を検査する方法
リフレクションは、プログラムが実行時に任意のデータ型を検査および操作できるようにする Golang 標準ライブラリの強力な機能です。リフレクションを使用すると、カスタム型の値、メソッド、フィールドを検査したり、型自体を作成および変更したりすることもできます。
リフレクションの基本
リフレクションを使用する最初のステップは、reflect
パッケージを参照することです: reflect
包:
import "reflect"
类型的值可以通过 reflect.ValueOf()
函数获取:
v := reflect.ValueOf(yourValue)
reflect.Type
类型表示一个 Go 类型。你可以使用 reflect.TypeOf()
函数获取一个类型的 reflect.Type
:
typ := reflect.TypeOf(YourType{})
检查自定义类型
获取字段
使用 NumField()
和 Field()
方法可以获取类型的字段:
for i := 0; i < typ.NumField(); i++ { fmt.Println(typ.Field(i).Name) }
获取方法
使用 NumMethod()
和 Method()
方法可以获取类型的公共方法:
for i := 0; i < typ.NumMethod(); i++ { fmt.Println(typ.Method(i).Name) }
检查类型值
获取字段值
使用 FieldByName()
方法可以获取类型的字段值:
value := v.FieldByName("FieldName").Interface()
调用方法
使用 Call()
result := v.MethodByName("MethodName").Call([]reflect.Value{reflect.ValueOf(arg1), reflect.ValueOf(arg2)})
reflect.ValueOf()</ を通じて取得できます。 code> function: <p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:go;toolbar:false;'>type MyType struct {
Name string
Age int
}
myType := MyType{
Name: "John Doe",
Age: 30,
}
// 检查类型元信息
fmt.Println("Type:", reflect.TypeOf(myType))
// 检查名称字段
fmt.Println("Name Field:", reflect.ValueOf(myType).FieldByName("Name").String())
// 调用 ToString 方法
result := reflect.ValueOf(myType).MethodByName("ToString").Call([]reflect.Value{})
fmt.Println("ToString Result:", string(result[0].Bytes()))</pre><div class="contentsignin">ログイン後にコピー</div></div><strong><code>reflect.Type
型は Go 型を表します。 reflect.TypeOf()
関数を使用して、型の reflect.Type
を取得できます: rrreeeカスタム タイプを確認する
🎜フィールドを取得する🎜🎜🎜 Use NumField() メソッドとField()
メソッドは、次のタイプのフィールドを取得できます: 🎜rrreee🎜🎜メソッドを取得します🎜🎜🎜Use NumMethod() と <code>Method()
メソッドは、次のタイプのパブリック メソッドを取得できます。 () メソッドを使用して、タイプ Value のフィールドを取得します: 🎜rrreee🎜🎜Call メソッド🎜🎜🎜 Call()
メソッドを使用して、タイプ : 🎜rrreee🎜 のパブリック メソッドを呼び出します🎜実用的なケース🎜🎜🎜以下は、リフレクションを使用してカスタム型をチェックする簡単な方法です。例: 🎜rrreee🎜この例は、型のメタ情報を取得し、フィールド値にアクセスし、メソッドを呼び出す方法を示しています。 🎜以上がGolang でリフレクションを使用してカスタム型をチェックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。