Maison > Problème commun > le corps du texte

Comment convertir une structure en langage Go

DDD
Libérer: 2023-06-16 12:01:31
original
1322 Les gens l'ont consulté

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.

Comment convertir une structure en langage Go

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
}
Copier après la connexion
#🎜🎜 #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,
}
Copier après la connexion

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
}
Copier après la connexion

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 struct

Lorsque 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)
}
}
Copier après la connexion
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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!