通常都是定义读写双向的 chan,定义单向 chan 问题。

专栏的介绍可以参考 《GotchaGolang专栏》,代码可以看《宝库-Gotcha》

通过 只写 chan 传递另一个只读的 chan,怎么写

案例

平常一般是这么声明 chan 的:

1
2
3
4
5
6
7
8
9
10
package main

import "fmt"

func () {

  xChan := make(chan int)

  fmt.Println(len(xChan)); //0
}

要声明一个单向的 chan 可以使用这一的方式:大专栏  Golang: chan定义问题(7)p>

1
2
chan<- float64  // 只写 float64 类型变量 (write-only)
<-chan int // 只读 int 类型变量 (read-only)

传递 chan 变量怎么办?

1
2
3
chan<- chan int    //传递双向 chan, 同 chan<- (chan int)
chan<- <-chan int //传递只读 给只写chan, 同 chan<- (<-chan int)
<-chan <-chan int //传递只读chan 给只读chan 同 <-chan (<-chan int)

总结

定义只读,只写的类型,看上去比较诡异,可以把 <-chanchan<- 看做类型即可,同 chan 一样。


Merlin 2018.3 chan 的定义问题

最新文章

  1. 如何去掉div滚动条
  2. RCP:解决Navigator快捷键不生效的问题
  3. 自定义安装php开发环境(1)--apache和php整合
  4. 在matlab和opencv中分别实现稀疏表示
  5. method chaining
  6. p2p項目”復活“之想
  7. 基于阿里云server搭建SVNserver
  8. 开始我的.NET的学习旅程
  9. android httpClient 支持HTTPS的访问方式
  10. 怎样编制excel序列目录
  11. selenium+python定位元素方法
  12. ef 增加或者更新的习惯思维
  13. Entity Framework框架 (一)
  14. Java HashSet和HashMap源码剖析
  15. POJ 1011 Sticks(dfs+剪枝)
  16. Qt——元对象和属性机制
  17. QString::arg()//用字符串变量参数依次替代字符串中最小数值
  18. C++函数及参数
  19. Markdown黑色背景代码高亮
  20. 【AS3 Coder】任务六:人物换装(纸娃娃)系统的制作

热门文章

  1. spring前两天
  2. visual studio2019下动态链接库的制作
  3. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:图像预处理完整样例
  4. windows10+apache2.4+python3.6部署Django2.2.4项目
  5. iOS 之keychain详解(附有Demo)
  6. tomcat更新class不生效
  7. 【shell基础】条件测试
  8. CSS样式表---------第三章:样式属性
  9. 数学中的距离distance(未完成)
  10. 一、安装Docker CE