channel-directions.go
package main
import "fmt"
//当使用通道作为函数的参数,可以指定这个通道只用来发送或接收值
// 只允许发送数据的通道
func ping(pings chan<- string, msg string) {
pings <- msg
}
// 只允许接收来自ping通道的数据
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 msg")
pong(pings, pongs)
fmt.Println(<-pongs)
}