Cuando se utilizan canales como parámetros de funciones, puedes especificar si un canal está destinado solo
para
enviar o recibir valores. Esta especificidad aumenta la seguridad de tipo del programa.
|
|
|
package main
|
|
import "fmt"
|
Esta función ping solo acepta un canal para enviar valores. Sería un error en tiempo de
compilación
intentar recibir en este canal.
|
func ping(pings chan<- string, msg string) {
pings <- msg
}
|
La función pong acepta un canal para recibir (pings ) y un segundo para enviar
(pongs ).
|
func pong(pings <-chan string, pongs chan<- string) {
msg := <-pings
pongs <- msg
}
|
|
func main() {
pings := make(chan string, 1)
pongs := make(chan string, 1)
ping(pings, "passed message")
pong(pings, pongs)
fmt.Println(<-pongs)
}
|