Como sabemos, un canal es un medio de comunicación entre rutinas que se ejecutan simultáneamente para que puedan enviarse y recibir datos entre sí. De forma predeterminada, un canal es bidireccional, pero también puede crear un canal unidireccional. Un canal que solo puede recibir datos o un canal que solo puede enviar datos es el canal unidireccional. El canal unidireccional también se puede crear con la ayuda de la función make() como se muestra a continuación:
// Only to receive data c1:= make(<- chan bool) // Only to send data c2:= make(chan<- bool)
Ejemplo 1:
C
// Go program to illustrate the concept // of the unidirectional channel package main import "fmt" // Main function func main() { // Only for receiving mychanl1 := make(<-chan string) // Only for sending mychanl2 := make(chan<- string) // Display the types of channels fmt.Printf("%T", mychanl1) fmt.Printf("\n%T", mychanl2) }
Producción:
<-chan string chan<- string
Conversión de canal bidireccional en canal unidireccional
En el lenguaje Go, puede convertir un canal bidireccional en un canal unidireccional, o en otras palabras, puede convertir un canal bidireccional en un canal de solo recepción o solo de envío, pero no es posible viceversa. Como se muestra en el siguiente programa:
Ejemplo:
C
// Go program to illustrate how to convert // bidirectional channel into the // unidirectional channel package main import "fmt" func sending(s chan<- string) { s <- "GeeksforGeeks" } func main() { // Creating a bidirectional channel mychanl := make(chan string) // Here, sending() function convert // the bidirectional channel // into send only channel go sending(mychanl) // Here, the channel is sent // only inside the goroutine // outside the goroutine the // channel is bidirectional // So, it print GeeksforGeeks fmt.Println(<-mychanl) }
Producción:
GeeksforGeeks
Uso del canal unidireccional: el canal unidireccional se usa para proporcionar la seguridad de tipo del programa para que el programa dé menos errores. O también puede usar un canal unidireccional cuando desee crear un canal que solo pueda enviar o recibir datos.
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA