来源:https://github.com/xg-wang/gobyexample/tree/master/examples
//当使用通道作为函数的参数时,你可以指定这个通道是不是只用来
//发送或者接受值。这个特性提升了程序的类型安全性
package main
import "fmt"
//`ping` 函数定义了一个只允许发送数据的通道(发送一个新的值到通道)
func ping(pings chan<- string,msg string) {
pings <- msg
}
//`pong`函数允许通道('pings')来接收数据(从通道中接受一个值),另一通道(`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))
}
输出结果:
passed message