Wie implementiert man eine Schnittstelle mit einer Schnittstelle als Rückgabetyp in Go?

Susan Sarandon
Freigeben: 2024-11-14 17:46:02
Original
972 Leute haben es durchsucht

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

Überwindung des Hindernisses bei der Implementierung einer Schnittstelle mit einer Schnittstelle als Rückgabetyp in Go

In Go kann beim Versuch, eine Schnittstelle mit a zu implementieren, ein Fehler auftreten Rückgabetyp, der auch eine Schnittstelle ist. Diese Frage befasst sich mit diesem Problem und bietet eine Lösung, die den Fehler behebt.

Der bereitgestellte Code demonstriert eine Schnittstellen-IA mit einer Methode FB(), von der erwartet wird, dass sie eine Schnittstellen-IB zurückgibt. Die Implementierung von FB in Struktur A gibt jedoch einen konkreten Typ *B anstelle von IB zurück.

Um diesen Fehler zu beheben, ändern Sie einfach den Rückgabetyp von FB in Struktur A so, dass er IB anstelle von *B ist:

func (a *A) FB() IB {
    return a.b
}
Nach dem Login kopieren

Diese Änderung stellt sicher, dass A die IA-Schnittstelle korrekt implementiert und den Fehler behebt.

Schnittstelle über Pakete hinweg

Die Frage fragt auch nach der Definition von Schnittstellen in separaten Paketen. Dieser Ansatz ist in Go möglich, sodass Sie Schnittstellen über verschiedene Pakete hinweg gemeinsam nutzen können. Wenn sich die Implementierung jedoch in einem anderen Paket befindet, muss in der Implementierung der vollständig qualifizierte Schnittstellenname verwendet werden.

Wenn beispielsweise IA und IB im Paket foo definiert sind und sich die Implementierung im Paket bar befindet, Die Deklaration im Paket bar wäre:

type IA interface {
    FB() foo.IB
}
Nach dem Login kopieren

Während die Implementierung in bar wie folgt aussehen würde:

func (a *A) FB() foo.IB {
    return a.b
}
Nach dem Login kopieren

Diese Anpassung stellt sicher, dass der Rückgabetyp von FB mit dem erwarteten Typ übereinstimmt, der im angegeben ist IA-Schnittstelle, unabhängig vom Paket, in dem die Schnittstelle definiert ist.

Das obige ist der detaillierte Inhalt vonWie implementiert man eine Schnittstelle mit einer Schnittstelle als Rückgabetyp in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage