Wie implementiert man Schnittstellenmethoden mit Schnittstellenrückgabetypen in Go?

Susan Sarandon
Freigeben: 2024-11-09 15:12:02
Original
532 Leute haben es durchsucht

How to Implement Interface Methods with Interface Return Types in Go?

Schnittstellenmethode mit Schnittstellenrückgabetyp in Go implementieren

In Go kann es vorkommen, dass eine Schnittstellenmethode eine Schnittstelle als Schnittstelle hat Rückgabetyp. Dies wirft die Frage auf, wie eine solche Methode implementiert werden kann.

Betrachten Sie den bereitgestellten Beispielcode:

type IA interface {
    FB() IB
}

type IB interface {
    Bar() string
}

type A struct {
    b *B
}

func (a *A) FB() *B {
    return a.b
}

type B struct{}

func (b *B) Bar() string {
    return "Bar!"
}
Nach dem Login kopieren

Beim Versuch, diesen Code zu kompilieren, tritt ein Fehler auf, weil die FB-Methode der A-Struktur zurückkehrt einen konkreten Typ *B anstelle des erforderlichen IB-Schnittstellentyps.

Um dieses Problem zu beheben, ändern Sie einfach die FB-Methode in der A-Struktur, um den IB-Schnittstellentyp zurückzugeben:

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

Jetzt , die A-Struktur implementiert die IA-Schnittstelle korrekt und kann als IA-Typ verwendet werden.

In Fällen, in denen die Schnittstellen in verschiedenen Paketen definiert sind, ist es dennoch möglich, die Methode entsprechend zu implementieren. Wenn beispielsweise IA und IB im Paket foo definiert sind und sich die Implementierungen im Paket bar befinden, wären die Deklaration und Implementierung wie folgt:

Deklaration (im Paket foo):

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

Implementierung (im Bar-Paket):

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

Durch Umwandlung des zurückgegebenen Werts in den erforderlichen Schnittstellentyp kann die Implementierung der erforderlichen Schnittstelle entsprechen und kompiliert werden erfolgreich.

Das obige ist der detaillierte Inhalt vonWie implementiert man Schnittstellenmethoden mit Schnittstellenrückgabetypen 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