Maison > développement back-end > Golang > Comment implémenter une interface avec une interface comme type de retour dans Go ?

Comment implémenter une interface avec une interface comme type de retour dans Go ?

Susan Sarandon
Libérer: 2024-11-14 17:46:02
original
1021 Les gens l'ont consulté

How to Implement an Interface with an Interface as Return Type in Go?

Surmonter l'obstacle de l'implémentation d'une interface avec une interface comme type de retour dans Go

Dans Go, il est possible de rencontrer une erreur en essayant d'implémenter une interface avec un type de retour qui est également une interface. Cette question approfondit ce problème et fournit une solution qui résout l'erreur.

Le code fourni démontre une interface IA avec une méthode FB(), qui devrait renvoyer une interface IB. Cependant, l'implémentation de FB dans la structure A renvoie un type concret *B au lieu de IB.

Pour rectifier cette erreur, modifiez simplement le type de retour de FB dans la structure A pour qu'il soit IB au lieu de *B :

func (a *A) FB() IB {
    return a.b
}
Copier après la connexion

Cette modification garantit que A implémente correctement l'interface IA et résout l'erreur.

Interfaçage à travers Packages

La question porte également sur la définition d'interfaces dans des packages séparés. Cette approche est réalisable dans Go, vous permettant de partager des interfaces entre différents packages. Cependant, lorsque l'implémentation est dans un package différent, il est nécessaire d'utiliser le nom d'interface complet dans l'implémentation.

Par exemple, si IA et IB sont définis dans le package foo et que l'implémentation est dans la barre du package, la déclaration dans package bar serait :

type IA interface {
    FB() foo.IB
}
Copier après la connexion

Alors que l'implémentation dans bar deviendrait :

func (a *A) FB() foo.IB {
    return a.b
}
Copier après la connexion

Cet ajustement garantit que le type de retour de FB correspond au type attendu spécifié dans l'interface IA, quel que soit le package dans lequel l'interface est définie.

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