Canal unidireccional en Golang

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *