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 }
package B type Doer interface { Do() string }
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" }
Solution :
À l'aide de la fonctionnalité d'intégration de Go, séparer les types de wrapper peut être créé :Remarques supplémentaires :
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!