Go 什么';这两者之间的区别是什么<-陈";及;陈";作为函数返回类型?

Go 什么';这两者之间的区别是什么<-陈";及;陈";作为函数返回类型?,go,channel,Go,Channel,我是哥朗新手 两者之间有功能上的区别吗 func randomNumberGenerator() <-chan int { 我试过两种方法,它们对我来说似乎都很好 我见过Rob Pike(Go创建者之一)在Google IO 2012的Go并发模式演讲中使用的前一种模式。我也在Go的官方网站上看到过。为什么要添加两个额外的字符(“这是一个示例 可选的两者确实都能工作。但其中一个更具约束性。箭头指向chan关键字的表单意味着返回的频道只能由客户端代码从中提取。不允许推送:推送将由随机数生成

我是哥朗新手

两者之间有功能上的区别吗

func randomNumberGenerator() <-chan int {
我试过两种方法,它们对我来说似乎都很好

我见过Rob Pike(Go创建者之一)在Google IO 2012的Go并发模式演讲中使用的前一种模式。我也在Go的官方网站上看到过。为什么要添加两个额外的字符(“这是一个示例


可选的
两者确实都能工作。但其中一个更具约束性。箭头指向
chan
关键字的表单意味着返回的频道只能由客户端代码从中提取。不允许推送:推送将由随机数生成器函数完成。相反,有一个第三种形式,箭头指向
chan
,使所述通道仅向客户端写入

chan   // read-write
<-chan // read only
chan<- // write only
chan//读写
这不仅仅是“用户永远不要发送,否则会发生不好的事情”。好吧,尝试发送只会让编译器对你直截了当地生气。
chan   // read-write
<-chan // read only
chan<- // write only
func log(<-chan string) { ...