Go 言語のリフレクション機能を使用すると、プログラムは実行時に型の構造を検査および変更できます。 Type、Value、reflect.Kind を使用すると、オブジェクトの型情報、フィールド値、メソッドを取得したり、オブジェクトを作成および変更したりすることができます。具体的な操作方法としては、型の確認(TypeOf())、フィールド値の取得(ValueOf()、FieldByName())、フィールド値の変更(Set())、オブジェクトの作成(New())などがあります。
Go Reflection: 包括的な分析と実践的な戦闘
はじめに
Reflection はGo プログラムが実行時に型の構造を調べて変更できるようにする言語の強力な機能。リフレクションを通じて、オブジェクトの型情報、フィールド値、メソッドを取得し、実行時にオブジェクトを作成および変更することもできます。
基本概念
リフレクションの操作方法
リフレクションを使用するには、reflect
パッケージをインポートする必要があります。一般的に使用される操作メソッドの一部を次に示します。
実際的なケース
型のチェック
TypeOf() メソッドを使用して、型をチェックできます。変数。次の例では、変数 num
の型をチェックします。
import "reflect" var num int = 10 t := reflect.TypeOf(num) fmt.Println(t.Kind()) // 输出:int
フィールド値の取得
オブジェクトの実際の値は、次のコマンドを使用して取得できます。 ValueOf() メソッドと Field() メソッドを通じてフィールド値にアクセスします。次の例では、構造体 Person
の "Name" フィールド値を取得します。
type Person struct { Name string Age int } p := Person{Name: "John", Age: 30} v := reflect.ValueOf(p) nameField := v.FieldByName("Name") name := nameField.Interface().(string) fmt.Println(name) // 输出:John
フィールド値を変更します。
Set( ) メソッドを使用してオブジェクトフィールドの値を変更します。次の例では、構造体 p
の「Age」フィールド値を変更します。
ageField := v.FieldByName("Age") ageField.SetInt(40) // 将 Age 设置为 40 fmt.Println(p.Age) // 输出:40
オブジェクトの作成
New() メソッドを使用できます。新しいオブジェクトを作成します。次の例では、新しい Person
オブジェクトを作成します:
empType := reflect.TypeOf(Person{}) empValue := reflect.New(empType) emp := empValue.Interface().(Person) emp.Name = "Mary" emp.Age = 25 fmt.Println(emp)
以上がGolang のリフレクションとアプリケーション シナリオの分析の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。