Maison > développement back-end > Golang > Comment implémenter une méthode `Save()` commune pour Go Structs partageant un champ ?

Comment implémenter une méthode `Save()` commune pour Go Structs partageant un champ ?

Susan Sarandon
Libérer: 2024-11-24 07:03:11
original
372 Les gens l'ont consulté

How to Implement a Common `Save()` Method for Go Structs Sharing a Field?

Comment implémenter une méthode commune pour les structures avec un champ partagé dans Go

Lorsque vous travaillez avec des structures partageant un champ commun, cela peut Il serait souhaitable d’ajouter une méthode applicable à chacun d’eux. Cette question explore ce scénario dans le contexte de Beego/ORM, où deux structures, ModelA et ModelB, nécessitent une méthode Save().

Solutions proposées

  • Définition de l'interface : Définissez une interface appelée Savable qui déclare la méthode Save(). Implémentez cette interface pour ModelA et ModelB pour leur permettre d'utiliser la fonctionnalité Save().

<br>type Saveable interface {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">Save()
Copier après la connexion

}

func (un modèle A) Save() {

// Implementation for ModelA
Copier après la connexion

}

func (b ModelB) Enregistrer() {

// Implementation for ModelB
Copier après la connexion

}

  • Intégration : Créez une structure de base appelée ModelC qui contient le champ Guid partagé. Intégrez cette structure dans ModelA et ModelB. Définissez la méthode Save() dans ModelC pour la rendre disponible à la fois pour ModelA et ModelB.

<br>tapez ModelC struct {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">Guid string `orm:"pk"`
Copier après la connexion

}

func (c ModelC) Erreur Save() {

// Implementation for ModelC
Copier après la connexion

}

tapez la structure ModelA {

ModelC
FiledA string
Copier après la connexion

}

tapez la structure ModelB {

ModelC
FiledB string
Copier après la connexion

}

Attention avec Intégration

Il convient de noter que l'intégration présente certaines limites. Bien que la méthode Save() intégrée soit disponible pour ModelA et ModelB, les champs supplémentaires spécifiques à ces structures ne seront pas automatiquement inclus dans l'opération Save().

Conclusion

La solution la plus appropriée dépend des exigences spécifiques du système. Si l'implémentation de Save() varie considérablement entre ModelA et ModelB, l'approche d'interface offre une plus grande flexibilité. Cependant, s'ils partagent une implémentation commune, l'intégration peut être plus efficace car elle élimine le besoin de code redondant.

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
Article précédent:Comment puis-je accéder efficacement aux runes aléatoires dans les chaînes Go sans utiliser de boucles For ? Article suivant:Comment récupérer en toute sécurité les valeurs d'une `map[string]interface{}` dans Go ?
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
Derniers numéros
Rubriques connexes
Plus>
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal