通过上篇文章,我们知道该怎么声明信道 Channel,以及发送和读取数据。然而本文要讲的是单向Channel
,可单向信道Channel到底是怎样的呢?
通过上篇文章,我们知道该怎么声明信道 Channel,以及发送和读取数据。然而本文要讲的是单向Channel
,可单向信道Channel到底是怎样的呢?
所谓的单向Channel信道
,也就是声明出来的信道Channel,此刻的Channel信道便是只能发送或读取数据。
要声明单向信道Channel,可以使用chan<-
来声明一个只能发送数据的信道,其信道变量的类型则为chan<-
.
而<-chan
声明出来的信道便是只能接受数据,类型则是<-chan
。
var onlyReadChan chan<- readChanType // 声明一个只能写入数据的信道
var onlyWriteChan <-chan writeChanType // 声明一个只能读取数据的信道
package main
import (
"fmt"
)
//定义一个带有 只能发送数据的信道 的参数 函数
func onlySend(ch chan<- string) {
ch <- "秋码记录"
ch <- "https://qiucode.cn"
}
//定义一个带有 只能接受数据的信道 的参数 函数
func onlyRead(ch <-chan string) {
for {
fmt.Println(<-ch)
}
}
func main() {
var ch = make(chan string)
go onlySend(ch)
go onlyRead(ch)
}