Accéder aux champs parents à partir de méthodes intégrées dans Go : est-ce faisable ?
Dans Go, les méthodes intégrées permettent d'incorporer des types dans d'autres types, ce qui permet réutilisation du code et fourniture d'une interface plus simple. Cependant, une question courante se pose : les méthodes intégrées peuvent-elles accéder aux champs du type parent ?
Contexte :
Le mécanisme d'intégration de Go exploite la composition pour étendre les fonctionnalités d'un type sans héritage. Lorsqu'un type est intégré, ses champs et méthodes font partie du type d'intégration.
Objectif :
Le but de cette question concerne la création d'un ORM de style Active Record pour Go, où les méthodes sont intégrées à la structure utilisateur pour extraire le magasin de données opérations.
Exemple :
type Foo struct { *Bar Name string } func (s *Foo) Method() { // How to access "Name" field from this embedded method? }
Question :
Existe-t-il un moyen de créer des champs de niveau supérieur ( champs parents) accessibles à partir de méthodes intégrées comme s.Name ou call s.Method()?
Réponse :
Go ne prend pas en charge nativement l'accès aux champs parents à partir de méthodes intégrées. Le récepteur de la méthode intégrée est strictement lié au type intégré dans ce cas, *Bar. Par conséquent, accéder directement aux champs parents n'est pas possible.
Approches alternatives :
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!