素数筛的实现中,chan作为参数的时候加了 赋值方向的符号(<- ,->),但是我去掉了运行效果是一样的,加这个符号主要是什么作用呢?

ximen · · 1202 次点击
好像是这个意思 var ch chan int var ch1 chan&lt;- int //ch1只能写 var ch2 &lt;-chan int //ch2只能读
#2
更多评论
为了接收方往 chan 写值或发送方从 chann 接收,相当于限制了方向。
#1
**你这里没有区分发送和接收** ``` package main import ( &#34;fmt&#34; &#34;sync&#34; ) // 通道默认是双向的, 不区分发送和接收端 // 某些时候我们可以限制手发操作的方向 // 尽管可以用make创建单向通道, 没有任何意义 // 通常使用类型转换来获取单向通道, 并分别赋予操作双方 func main() { var wg sync.WaitGroup wg.Add(2) c := make(chan int) var send chan &lt;- int = c var recv &lt;- chan int = c go func() { defer wg.Done() for x := range recv { fmt.Println(x) } }() go func() { defer wg.Done() defer close(c) for i := 0; i &lt; 100; i ++ { send &lt;- i } }() wg.Wait() } ```
#3