Maison > développement back-end > Golang > Les méthodes Go intégrées peuvent-elles accéder aux champs de structure englobants ?

Les méthodes Go intégrées peuvent-elles accéder aux champs de structure englobants ?

Patricia Arquette
Libérer: 2024-12-16 21:34:20
original
239 Les gens l'ont consulté

Can Embedded Go Methods Access Enclosing Struct Fields?

Les méthodes intégrées peuvent-elles accéder aux champs « Parent » ?

Contexte :

Après des recherches et des tests approfondis, l'auteur estime que les méthodes intégrées dans Go ne peuvent pas accéder aux champs "parents". Cette question explore s'il existe des exceptions connues ou des approches alternatives.

Objectif :

L'objectif est de créer un ORM de style Active Record pour Go, où les opérations CRUD seraient être intégré dans la structure utilisateur. Cela offrirait une lisibilité et une abstraction accrues du magasin de données back-end.

Exemple :

L'extrait de code Go fourni tente d'accéder au champ "Nom" du " Foo" de la méthode "Test" de la structure "Bar" intégrée. Cependant, cela entraîne une erreur de compilation.

Question :

Existe-t-il un mécanisme dans Go qui permet aux méthodes intégrées d'accéder aux champs de la structure englobante ?

Réponse :

Go ne prend pas en charge l'accès direct aux champs parents dans les méthodes intégrées. Le type de récepteur de la méthode « Test » est un pointeur « Bar », et il n'y a aucun moyen pour la méthode de déterminer si ce pointeur est intégré ou autonome.

Solutions possibles :

Une solution de contournement consiste à ajouter un membre interface{} à la structure "Bar" et à exiger que le type conteneur soit attribué à ce membre. Cependant, ce n'est pas une solution élégante et introduit une complexité supplémentaire.

Approche alternative :

Au lieu d'intégrer des méthodes, l'auteur suggère d'utiliser une structure d'API différente, telle que "db.Save(user)" plutôt que "user.Save()". Cette approche permet une extension plus facile à plusieurs bases de données et réduit la dépendance à l'égard de l'état global.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal