Maison > développement back-end > Golang > Comment implémenter des méthodes partagées pour les structures Go avec des champs communs ?

Comment implémenter des méthodes partagées pour les structures Go avec des champs communs ?

Linda Hamilton
Libérer: 2024-11-21 07:47:09
original
697 Les gens l'ont consulté

How to Implement Shared Methods for Go Structs with Common Fields?

Comment implémenter une méthode partagée pour une structure avec un champ commun dans Go

Lorsque vous traitez plusieurs structures partageant un champ commun, le il est souvent nécessaire d'implémenter une méthode commune pour ces structures. Bien que l'héritage ou les mixins puissent sembler des approches viables, ils sont confrontés à des limites dans Go.

Une approche consiste à définir une interface qui spécifie la méthode souhaitée, comme indiqué ci-dessous :

type Savable interface {
  Save()
}

// Satisfy Savable for ModelA
func (m ModelA) Save() {
  // Implement Save() for ModelA
}

var i Savable
i = SomeMethodThatReturnsMyModel()
i.Save()  // Call Save() on the implementing type
SomeOtherMethodThatAcceptsASavableAndCallsSave(i)
Copier après la connexion

Alternativement, l'intégration peut être utilisée pour réaliser la réutilisation du code. Cependant, cela nécessite une attention particulière, car les champs incorporés ne seront pas insérés lors de l'appel de o.Insert(this) à moins qu'ils ne soient également définis dans le type incorporé.

type ModelC struct {
  Guid string `orm:"pk"`
}

func (m ModelC) Save() {
  // Implement Save() for ModelC
}

type ModelA struct {
  ModelC
  FiledA string
}

type ModelB struct {
  ModelC
  FiledB string
}
Copier après la connexion

Il est important de se rappeler que l'incorporation ne prend en charge le remplacement des méthodes basées sur l'héritage. Redéfinir Save() dans la structure intégrée et appeler la méthode de la classe de base dans la redéfinition n'est pas considéré comme une bonne pratique dans Go.

Lorsque l'on considère entre les deux approches, il est essentiel d'évaluer les exigences spécifiques et les compromis impliqué. L'approche d'interface offre une plus grande flexibilité, tandis que l'intégration peut offrir des avantages en termes de performances mais nécessite un examen attentif du comportement du champ intégré.

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