Maison > développement back-end > Golang > Les canaux Go peuvent-ils gérer plusieurs types de données ?

Les canaux Go peuvent-ils gérer plusieurs types de données ?

Mary-Kate Olsen
Libérer: 2024-11-03 13:55:30
original
311 Les gens l'ont consulté

Can Go Channels Handle Multiple Data Types?

Tapez les chaînes agnostiques dans Go

Question :

Dans Go, est-il possible de envoyer plusieurs types de données via un seul canal ?

Exemple :

Le code suivant tente d'envoyer différents types via un canal : http://play.golang. org/p/7p2Bd6b0QT.

Réponse :

Oui, il est possible de créer des chaînes indépendantes du type dans Go. Pour envoyer plusieurs types via un canal, utilisez :

greet := make(chan pet)
Copier après la connexion

Avec cette modification, vous pouvez envoyer n'importe quel type qui implémente l'interface animal de compagnie.

Envoi de données génériques :

Si vous devez envoyer des données complètement génériques, créez un canal de type chan interface{} et utilisez la réflexion pour déterminer le type de données reçues.

Exemple :

ch := make(chan interface{})

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

ch <- "this is it"
Copier après la connexion

Utilisation d'un commutateur de type :

Comme alternative à la réflexion, vous pouvez utiliser un commutateur de type avec une instruction select comme celle-ci :

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)
}
Copier après la connexion

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!

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