Maison > développement back-end > Golang > le corps du texte

Comment implémenter des interfaces avec des signatures de méthodes identiques à partir de packages distincts dans Go ?

Patricia Arquette
Libérer: 2024-11-03 19:57:30
original
592 Les gens l'ont consulté

How to Implement Interfaces with Identical Method Signatures from Separate Packages in Go?

Implémentation d'interfaces avec des signatures de méthode identiques à partir de packages séparés

Dans Go, il n'est pas possible d'implémenter deux interfaces différentes avec la même signature de méthode dans différents forfaits. En règle générale, chaque type d'interface attend une implémentation spécifique, garantissant la sécurité du type.

Cependant, si un objet doit satisfaire plusieurs interfaces avec des méthodes portant le même nom, il peut être difficile d'implémenter une logique cohérente pour toutes les interfaces.

🎜>Exemple de cas :

Considérons deux packages A et B contenant des interfaces Doer avec des signatures de méthode identiques :
package A
type Doer interface {
    Do() string
}
Copier après la connexion
package B
type Doer interface {
    Do() string
}
Copier après la connexion

Problème :

Dans le package main, un seul objet C est conçu pour implémenter à la fois A.Doer et B.Doer :
package main

func (c C) Do() string {
    return "C now implements both A and B"
}
Copier après la connexion

Cette implémentation, cependant, provoquera un bug lorsque appeler B.FuncB(c) car la méthode Do implémentée en C est destinée uniquement à A.Doer.

Solution :

À l'aide de la fonctionnalité d'intégration de Go, séparer les types de wrapper peut être créé :
  • DoerA
  •  : intègre C et implémente A.Do().
  • DoerB
  •  : intègre C et implémente B .Do().

En passant le type de wrapper approprié comme argument à A.FuncA et B.FuncB, la logique souhaitée pour chaque interface peut être maintenue.

Remarques supplémentaires :

  • Dans certains cas, l'utilisation d'un type d'implémentation dédié peut être nécessaire pour satisfaire des exigences d'interface spécifiques sans encourir de conflits de types potentiels.
  • Lorsqu'il s'agit d'un héritage complexe Dans des scénarios impliquant plusieurs interfaces avec des signatures de méthodes qui se chevauchent, il est crucial d'examiner attentivement la logique et de garantir la cohérence entre les intégrations.

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