![1.jpg](https://static.studygolang.com/170830/801b7230c815d02146e1a7e5fe2a8f62.jpg)
更多评论
好像是这个意思
var ch chan int
var ch1 chan<- int //ch1只能写
var ch2 <-chan int //ch2只能读
#2
**你这里没有区分发送和接收**
```
package main
import (
"fmt"
"sync"
)
// 通道默认是双向的, 不区分发送和接收端
// 某些时候我们可以限制手发操作的方向
// 尽管可以用make创建单向通道, 没有任何意义
// 通常使用类型转换来获取单向通道, 并分别赋予操作双方
func main() {
var wg sync.WaitGroup
wg.Add(2)
c := make(chan int)
var send chan <- int = c
var recv <- 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 < 100; i ++ {
send <- i
}
}()
wg.Wait()
}
```
#3