## Wie konvertiere ich ein Interface-Slice in ein kompatibles Interface-Slice in Go?

Mary-Kate Olsen
Freigeben: 2024-10-24 18:28:55
Original
782 Leute haben es durchsucht

## How to Convert a Slice of Interfaces to a Compatible Interface Slice in Go?

Interface-Slices in kompatible Interface-Slices konvertieren

Die Implementierung verschiedener Schnittstellen, die überlappende Methoden enthalten, kann für Flexibilität bei der Programmierung sorgen. Allerdings kann die Übergabe eines Teils einer Schnittstelle an eine Funktion, die eine andere, aber kompatible Schnittstelle erwartet, zu Fehlern führen. Lassen Sie uns untersuchen, wie wir dieses Problem in Go angehen können.

Angenommen, wir haben die Schnittstellen A und B, wobei A B einschließt. Eine Implementierung von A, Impl, erfüllt sowohl A als auch B.

<code class="go">type A interface {
    Close() error
    Read(b []byte) (int, error)
}

type Impl struct {}

func (I Impl) Read(b []byte) (int, error) {
    fmt.Println("In read!")
    return 10, nil
}

func (I Impl) Close() error {
    fmt.Println("I am here!")
    return nil
}</code>
Nach dem Login kopieren

Einzelne Elemente können problemlos funktionsübergreifend übergeben werden. Der Versuch, Slices von A an Funktionen zu übergeben, die io.Reader erwarten, kann jedoch fehlschlagen.

<code class="go">func single(r io.Reader) {
    fmt.Println("in single")
}

func slice(r []io.Reader) {
    fmt.Println("in slice")
}

im := &Impl{}

// works
single(im)

// FAILS!
list := []A{t}
slice(list)</code>
Nach dem Login kopieren

Um dieses Problem zu beheben, können wir ein neues Slice vom Typ []io.Reader erstellen und es mit Elementen aus [ füllen. ]A. Dies ist die Problemumgehung, um die Einschränkung zu umgehen und die Kompatibilität zwischen verschiedenen, aber überlappenden Schnittstellentypen sicherzustellen.

Das obige ist der detaillierte Inhalt von## Wie konvertiere ich ein Interface-Slice in ein kompatibles Interface-Slice 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!