L'éditeur de PHP vous présentera comment accéder à la structure embarquée dans le champ slice pointeur de la structure. En langage Go, nous pouvons utiliser des tranches de pointeur pour stocker des données de structure et intégrer d'autres structures en tant que champs dans la structure. Cependant, l'accès aux champs de la structure intégrée nécessite certaines opérations spéciales. Cet article expliquera en détail comment accéder à ces champs de structure intégrés via le découpage de pointeur pour vous aider à mieux comprendre et appliquer cette fonctionnalité. Que vous soyez débutant ou développeur Go expérimenté, cet article vous fournira des conseils pratiques et des exemples de code pour vous aider à maîtriser ces connaissances facilement.
Je souhaite ajouter une fonctionnalité pour obtenir le premier élément lorsque les données sont []*struct
.
func getencfields(t reflect.type, list map[string]int) { for t.kind() == reflect.ptr { t = t.elem() } if t.kind() == reflect.struct { for i := 0; i < t.numfield(); i++ { field := t.field(i) tag := field.tag.get("bson") if containstag(tag, "encr") { list[getfieldname(field, tag)]++ } getencfields(field.type, list) } }
Dans ce code, je dois ajouter des fonctionnalités lorsque les données sont []*struct
. C'est le type de structure à passer dans cette fonction.
type Customer struct { Name string `json:"name" bson:"name"` Acnumber int64 `json:"acnumber" bson:"acnumber,encr"` Number int64 `json:"number" bson:"number,encr"` Address []*Address `json:"address" bson:"address"` } type Address struct { Mail string `json:"mail" bson:"mail,encr"` }
Merci pour votre soutien
Explorez les tableaux, les tranches et les cartes, tout comme des pointeurs.
func getEncFields(t reflect.Type, list map[string]int) { for t.Kind() == reflect.Ptr || t.Kind() == reflect.Slice || t.Kind() == reflect.Array || t.Kind() == reflect.Map { t = t.Elem() } if t.Kind() == reflect.Struct { for i := 0; i < t.NumField(); i++ { field := t.Field(i) tag := field.Tag.Get("bson") if containsTag(tag, "encr") { list[getFieldName(field, tag)]++ } getEncFields(field.Type, list) } } }
//m.sbmmt.com/link/b4572f47b7c69e27b8e46646d9579e67 p>
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!