在定义chan时可以指定chan是只读或是只写,这样会使程序只读性更强,更清晰
//定义只写chan
var in chan<- string
//定义只读chan
var out <-chan string
写段代码来试试吧:
package main
import (
"fmt"
"time"
)
//定义输入通道
func worker1(in chan<- string) {
fmt.Printf("%d\n",1)
in <- "我"
fmt.Printf("%d\n",2)
in <- "是"
fmt.Printf("%d\n",3)
in <- "c"
fmt.Printf("%d\n",4)
in <- "h"
fmt.Printf("%d\n",5)
in <- "a"
fmt.Printf("%d\n",6)
in <- "n"
fmt.Printf("%d\n",7)
time.Sleep(time.Second*5)
}
//定义输出通道
func worker2(out <-chan string) {
value := ""
i:=0
for {
value = <-out
i++
fmt.Printf("out %d -> %s\n",i,value)
}
}
这个很简单,在把chan当参数传入到业务函数时可以指定chan的功能是只读或只写