Reflection は、実行時にコードの構造と動作を検査および変更する機能で、reflect パッケージを介して Go に実装されます。リフレクションにより、次のことが可能になります。 型の構造とメタデータの取得 値の動的作成 メソッドの呼び出し
リフレクションは、強力なプログラミング形式 アプリケーションが実行時にコードの構造と動作を検査および変更できるようにする機能。 Go 言語では、リフレクションは reflect
パッケージを通じて提供されます。この記事では、Go のリフレクション機能を深く探求し、実際のケースを通じてそのアプリケーションを実証します。
基本
Go の各型は、reflect.Type
で表される型オブジェクトに対応します。型オブジェクトは、型構造、フィールド、およびメソッドへのアクセスを提供します。また、型の新しい値を作成し、そのメソッドを呼び出すこともできます。
型情報へのアクセス
型の型オブジェクトを取得するには、reflect.TypeOf
関数を使用します:
type Person struct { Name string Age int } func main() { t := reflect.TypeOf(Person{}) fmt.Println(t.Name(), t.Kind()) }
これにより、次のように出力されます:
Person struct
動的に作成された値
reflect.New
関数を使用して、次のタイプの値を動的に作成できます:
v := reflect.New(t).Elem() v.FieldByName("Name").SetString("John") v.FieldByName("Age").SetInt(30)
現在、v
は、Name
フィールドが「John」、Age
フィールドが 30 である Person
値を参照しています。 。
Call Method
reflect.Value.Method
メソッドを使用して、次のタイプのメソッドを呼び出すことができます:
m := v.MethodByName("String") m.Call(nil)
これにより、##Person タイプで
#String メソッドが呼び出され、「John (30)」が出力されます。
実践例
リフレクションは Go の実践的なアプリケーションで広く使用されています。一般的な例をいくつか示します。結論
Go のリフレクション機能は、コードの構造と動作を処理するための強力かつ柔軟な方法を提供します。 。基本的な概念と実践例を理解することで、リフレクションを使用してさまざまな問題を解決できます。以上がGo Exploration: リフレクション機能の詳細の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。