¿Cómo utilizar canales como argumentos de funciones?
Los canales pueden ser enviados a las funciones como argumentos, y estos pueden recibir después mensajes dentro de dichas funciones. Ademas de ser enviados como argumentos, podemos especificar si estos argumentos son de solo lectura, solo escritura, o ambos dependiendo de como se indique en el parámetro.
package main
import "fmt"
func soloLectura(noticias <-chan string) {
fmt.Println(<-noticias)
}
func soloEscritura(noticias chan<- string) {
noticias <- "Noticia 2"
}
func lecturaEscritura(noticias chan string) {
noticias <- "Noticia 3"
fmt.Println(<-noticias)
}
func main() {
nts := make(chan string, 2)
nts <- "Noticia 1"
soloLectura(nts)
soloEscritura(nts)
fmt.Println(<-nts)
lecturaEscritura(nts)
}
En el ejemplo anterior hemos utilizado un canal como argumento de 3 formas diferentes.
Solo lectura…
soloLectura(noticias <-chan string)
Solo escritura…
soloEscritura(noticias chan<- string)
Ya sea lectura y escritura…
lecturaEscritura(noticias chan string)
El argumento que enviamos es un canal con capacidad de 3.
nts := make(chan string, 2)