Reflection est une fonctionnalité qui inspecte et modifie la structure et le comportement du code au moment de l'exécution, implémentée dans Go via le package Reflection. Reflection permet : Obtenir la structure et les métadonnées d'un type Créer dynamiquement des valeurs Appeler des méthodes
Reflection est une puissante fonctionnalité de programmation qui permet aux applications d'inspecter et de modifier le code à la structure et au comportement d'exécution. En langage Go, la réflexion est fournie via le package reflect
. Cet article vous amènera à explorer en profondeur la fonction de réflexion de Go et à démontrer son application à travers des cas pratiques. 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
引用了一个 Person
值,其 Name
字段为 "John",Age
字段为 30。
调用方法
可以使用 reflect.Value.Method
方法调用类型的方法:
m := v.MethodByName("String") m.Call(nil)
这将调用 Person
类型上的 String
Bases
Chaque type dans Go correspond à un objet type représenté parreflect.Type
. Les objets type donnent accès aux structures de type, aux champs et aux méthodes. Il permet également de créer de nouvelles valeurs du type et d'appeler ses méthodes.
reflect.TypeOf
: peut être utiliséreflect.New crée dynamiquement une valeur de type : rrreee
Maintenantv
fait référence à une valeur Person
dont Nom
Le champ est "John" et le champ Âge
est 30. 🎜Appel de méthodes🎜🎜🎜Vous pouvez utiliser la méthode reflect.Value.Method
pour appeler une méthode sur un type : 🎜rrreee🎜Cela appellera la String Personne
tape /code> et imprime "John (30)". 🎜🎜🎜Cas pratiques🎜🎜🎜La réflexion est largement utilisée dans les applications pratiques en Go. Voici quelques exemples courants : 🎜🎜🎜Générer dynamiquement des formats de données tels que JSON ou YAML 🎜🎜Sérialiser et désérialiser des objets complexes 🎜🎜Implémenter des générateurs de code 🎜🎜Créer des objets basés sur des arguments de ligne de commande 🎜🎜🎜🎜Conclusion🎜🎜🎜Go La réflexion La fonctionnalité fournit un moyen puissant et flexible de gérer la structure et le comportement de votre code. En comprenant les concepts de base et des exemples pratiques, vous pouvez utiliser la réflexion pour résoudre divers problèmes. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!