Heim > Backend-Entwicklung > Golang > Können Go-Kanäle mehrere Datentypen verarbeiten?

Können Go-Kanäle mehrere Datentypen verarbeiten?

Mary-Kate Olsen
Freigeben: 2024-11-03 13:55:30
Original
285 Leute haben es durchsucht

Can Go Channels Handle Multiple Data Types?

Typ-agnostische Kanäle in Go

Frage:

Ist das in Go möglich? mehrere Datentypen über einen einzigen Kanal senden?

Beispiel:

Der folgende Code versucht, verschiedene Datentypen über einen Kanal zu senden: http://play.golang. org/p/7p2Bd6b0QT.

Antwort:

Ja, es ist möglich, typunabhängige Kanäle in Go zu erstellen. Um mehrere Typen über einen Kanal zu senden, verwenden Sie:

greet := make(chan pet)
Nach dem Login kopieren

Mit dieser Änderung können Sie jeden Typ senden, der die Pet-Schnittstelle implementiert.

Generische Daten senden:

Wenn Sie vollständig generische Daten senden müssen, erstellen Sie einen Kanal vom Typ Chan-Schnittstelle{} und verwenden Sie Reflektion, um die Art der empfangenen Daten zu bestimmen.

Beispiel:

ch := make(chan interface{})

go func() {
    select {
    case p := <-ch:
        fmt.Printf("Received a %q", reflect.TypeOf(p).Name())
    }
}()

ch <- "this is it"
Nach dem Login kopieren

Verwenden eines Typschalters:

Alternativ zur Reflexion können Sie einen Typschalter mit einer Select-Anweisung wie dieser verwenden:

p := <-ch
switch p := p.(type) {
case string:
    fmt.Printf("Got a string %q", p)
default:
    fmt.Printf("Type of p is %T. Value %v", p, p)
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonKönnen Go-Kanäle mehrere Datentypen verarbeiten?. 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