Maison >développement back-end >Golang >Introduction à la réflexion Golang et à l'analyse de scénarios d'application
La fonctionnalité de réflexion du langage Go permet aux programmes d'inspecter et de modifier la structure des types au moment de l'exécution. En utilisant Type, Value et Reflect.Kind, nous pouvons obtenir les informations de type, les valeurs de champ et les méthodes d'un objet, et nous pouvons également créer et modifier des objets. Les méthodes d'opération spécifiques incluent : la vérification du type (TypeOf()), l'obtention de la valeur du champ (ValueOf(), FieldByName()), la modification de la valeur du champ (Set()) et la création d'un objet (New()).
Go Reflection : analyse complète et combat pratique
Introduction
La réflexion est une fonctionnalité puissante du langage Go, qui permet aux programmes d'inspecter et de modifier la structure des types au moment de l'exécution. Grâce à la réflexion, nous pouvons obtenir les informations de type, les valeurs de champ et les méthodes de l'objet, et même créer et modifier des objets au moment de l'exécution.
Concepts de base
Méthode d'opération de réflexion
Pour utiliser la réflexion, nous devons importer le package reflect
. Voici quelques méthodes d'opération couramment utilisées : 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
num
: 🎜empType := reflect.TypeOf(Person{}) empValue := reflect.New(empType) emp := empValue.Interface().(Person) emp.Name = "Mary" emp.Age = 25 fmt.Println(emp)🎜🎜Obtention de la valeur du champ🎜🎜🎜Nous pouvons obtenir la valeur réelle de l'objet en utilisant la méthode ValueOf() et accéder à la valeur du champ via le Méthode Field(). L'exemple suivant obtient la valeur du champ "Nom" de la structure
Person
: 🎜rrreee🎜🎜Modifier la valeur du champ🎜🎜🎜Nous pouvons utiliser la méthode Set() pour modifier la valeur du champ de l'objet. L'exemple suivant modifie la valeur du champ "Age" de la structure p
: 🎜rrreee🎜🎜Création d'objets🎜🎜🎜Nous pouvons créer de nouveaux objets en utilisant la méthode New(). L'exemple suivant crée un nouvel objet Person
: 🎜rrreeeCe 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!