当使用通道作为函数的参数时,你可以指定这个通道是不是只用来发送或者接收值。这个特性提升了程序的类型安全性。

Example:

package main

import "fmt"

// <-chan 发送数据
// chan<- 接收数据 //ping 函数定义了一个只允许发送数据的通道。尝试使用这个通道来接收数据将会得到一个编译时错误。
func ping(pings chan<- string, msg string){
pings<- msg
} //pong 函数允许通道(pings)来接收数据,另一通道(pongs)来发送数据。
func pong(pings <-chan string, pongs chan<- string){
msg := <-pings
pongs <-msg
} func main(){
pings := make(chan string, 1)
pongs := make(chan string, 1)
ping(pings, "ping messages.")
pong(pings, pongs) fmt.Println(<-pongs)
}

Result:

$ go run example.go
ping messages.

坐标: 上一个例子   下一个例子

最新文章

  1. 惊心动魄的一上午,感谢eclipse 的文件恢复功能
  2. js清除cookie
  3. 【转】Unity中的协同程序-使用Promise进行封装(三)
  4. Shallow Size 和 Retained Size
  5. swift语言之多线程操作和操作队列(下)———坚持51天吃掉大象(写技术文章)
  6. list,set,map,数组之间的相互转换详细解析
  7. 8.1搜索专练DFS和BFS
  8. 摘自淘宝的js地区组件
  9. npm模块管理器入门
  10. JDK8 HashMap 源码解析
  11. java8在Collection中新增加的方法removeIf
  12. python之定义类创建实例
  13. gogs git代码管理
  14. BootStrap fileinput.js文件上传组件实例代码
  15. gcc static静态编译选项提示错误修正(/usr/lib/ld: cannot find -lc)
  16. 如何把PDF文件转换为JPG图片
  17. dell R730 安装windwos 2008 R2在windows loading files...完成后屏幕无信号(iDrac绿屏)
  18. JAVA单态设计模式
  19. ASP.NET 最全的POST提交数据和接收数据 —— (1) 用url传参方式
  20. 第k小子集

热门文章

  1. rabbitmq路由规则
  2. procixx和最近调试的坑
  3. bzoj4007 &amp; loj2111 [JLOI2015]战争调度 复杂度分析+树上背包
  4. DC/DCT/DCG 差别和联系
  5. python2和python3同时存在电脑时,安装包时的的命令行
  6. vue中使用canvas绘制签名
  7. 新增16条设计规约!阿里巴巴Java开发手册(详尽版)开放下载!
  8. 三、PCB设计与Allegro基本概念
  9. A Bug&#39;s Life - poj2492
  10. mysql经典面试题之学生成绩表