Maison >Problème commun >Comment convertir une structure en langage Go
Go structure de conversion de langage : 1. Convertissez la structure en carte, en utilisant les fonctions "TypeOf" et "ValueOf" dans le package Reflect pour obtenir le type et la valeur de la structure, puis parcourez chacune des struct et stockez-le dans une carte ; 2. Convertissez la carte en struct. Les paramètres d'entrée sont une carte et un pointeur vers la structure. La sortie est vide. construire par la réflexion.
L'environnement d'exploitation de ce tutoriel : système Windows 10, version go1.20, ordinateur Dell g3.
Le langage Go est un langage de programmation typé statiquement. L'une de ses caractéristiques est de définir et d'organiser des types de données complexes via des structures. La conversion de structure est l'une des compétences de base qui doivent être maîtrisées dans le développement du langage Go. Cet article explique comment convertir une structure.
La définition de struct :
En langage Go, struct peut être défini de la manière suivante :
type Person struct { Name string Age int }#🎜🎜 #This La définition représente une structure de type Person, qui comporte deux champs : Nom et Âge. Pour une structure définie, nous pouvons instancier un objet et définir sa valeur de la manière suivante :
a := Person{ Name: "Alice", Age: 20, }De cette façon, nous pouvons facilement définir la structure Les variables de type sont attribuées et utilisé.
1. Convertir une structure en carte
Lorsque nous devons convertir un type de structure en type de carte, nous pouvons utiliser le code suivant : #🎜 🎜#func StructToMap(obj interface{}) map[string]interface{} { objType := reflect.TypeOf(obj) objVal := reflect.ValueOf(obj) data := make(map[string]interface{}) for i := 0; i < objVal.NumField(); i++ { data[objType.Field(i).Name] = objVal.Field(i).Interface() } return data }
Le paramètre d'entrée de cette fonction est un type d'interface et la sortie est un type de carte. Cette fonction utilise les fonctions TypeOf et ValueOf du package Reflect pour obtenir le type et la valeur de la structure. La fonction parcourt ensuite chaque champ de la structure et le stocke dans une carte.
2. Convertir une carte en structLorsque nous devons convertir un type de carte en type struct, nous pouvons utiliser le code suivant : #🎜 🎜#
func MapToStruct(m map[string]interface{}, s interface{}) { sType := reflect.TypeOf(s).Elem() sVal := reflect.ValueOf(s).Elem() for i := 0; i < sType.NumField(); i++ { field := sType.Field(i) val := reflect.ValueOf(m[field.Name]) sVal.Field(i).Set(val) } }Les paramètres d'entrée de cette fonction sont une carte et un pointeur vers une structure, et la sortie est vide. Cette fonction mappe les valeurs de la carte aux champs correspondants dans la structure par réflexion.
Résumé :
À travers l'introduction ci-dessus, nous pouvons voir que dans le langage Go, la conversion de structure est très simple, il suffit d'utiliser la réflexion. Peut être réalisé facilement. Grâce à la méthode ci-dessus, nous pouvons volontiers utiliser le type struct et le convertir pendant le processus de développement du langage Go, afin de développer plus efficacement
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!