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
Susan Sarandonoriginal
2024-11-24 07:03:11455parcourir

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>
<pre class="brush:php;toolbar:false">Save()

}

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

// Implementation for ModelA

}

func (b ModelB) Enregistrer() {

// Implementation for ModelB

}

  • 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>
<pre class="brush:php;toolbar:false">Guid string `orm:"pk"`

}

func (c ModelC) Erreur Save() {

// Implementation for ModelC

}

tapez la structure ModelA {

ModelC
FiledA string

}

tapez la structure ModelB {

ModelC
FiledB string

}

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!

Déclaration:
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