[GO]单向channel和应用
var ch1 chan int //ch1是一个正常的channel,不是单向的
var ch2 chan <- float64 //ch2是一个单向的channel,只用于写float64的数据
var ch3 <- chan int //ch3是一个单向的channel,只用于读取int数据
package main
func main() {
//创建一个channel,双向的
ch := make(chan int)
//定义一个单向的只能写的channel
var writech chan <- int = ch
//但如果写成下面这样就会报错
<-writech
//定义一个单向的只能读的channel
var readch <- chan int = ch
//写成下面这样就会有问题
readch<-
//下面都会正常编译通过
writech <-
<- readch
//单向无法转换成双向
var ch2 chan int = writech
}
它的应用
package main import "fmt" //代表此channel只能写,不能读
func producer(out chan <- int) {
for i:=; i<=; i++ {
out<-i*i
}
close(out)
} func consumer(in <-chan int) {
for num := range in{
fmt.Println("num = ", num)
}
} func main() {
//创建一个双向通道ch
ch := make(chan int) //生产者,生产数字,写入channel
go producer(ch) //chennel传参,引用传递 //消费者,从channel里读取数字、然后打印
consumer(ch)
}
执行的结果
num =
num =
num =
num =
num =
num =
num =
num =
num =
num =
num =
[GO]单向channel和应用的更多相关文章
- go语言之进阶篇单向channel的应用 (生产者,消费者模型)
1.单向channel的应用 示例: package main import ( "fmt" ) //此通道只能写,不能读 func producer(out chan<- ...
- go语言之进阶篇单向channel特点
1.单向channel特点 package main //"fmt" func main() { //创建一个channel, 双向的 ch := make(chan int) / ...
- GO语言之channel
前言: 初识go语言不到半年,我是一次偶然的机会认识了golang这门语言,看到他简洁的语法风格和强大的语言特性,瞬间有了学习他的兴趣.我是很看好go这样的语言的,一方面因为他有谷歌主推,另一方面他确 ...
- Go语言编程读书笔记:Go channel(2)
单向channel 概念 单向channel是只能用于发送或者接收数据,channel本身必然是同时支持读写,否则根本没法用.假如一个channel只能读,那么肯定只会是空的,因为你没有机会向里面写数 ...
- Golang的channel使用以及并发同步技巧
在学习<The Go Programming Language>第八章并发单元的时候还是遭遇了不少问题,和值得总结思考和记录的地方. 做一个类似于unix du命令的工具.但是阉割了一些功 ...
- Golang channel 的基本使用方法
package main import ( "fmt" "learner/Add" "time" ) //a. 普通类型,普通变量保存的就是 ...
- go语言之并发编程 channel(1)
单向channel: 单向通道可分为发送通道和接收通道.但是无论哪一种单向通道,都不应该出现在变量的声明中,假如初始化了这样一个变量 var uselessChan chan <- int =m ...
- 由浅入深剖析 go channel
原文:https://www.jianshu.com/p/24ede9e90490 ---------------------------------- 由浅入深剖析 go channel chann ...
- Golang的goroutine协程和channel通道
一:简介 因为并发程序要考虑很多的细节,以保证对共享变量的正确访问,使得并发编程在很多情况下变得很复杂.但是Go语言在开发并发时,是比较简洁的.它通过channel来传递数据.数据竞争这个问题在gol ...
随机推荐
- 二、Jetty的配置说明
运行Jetty Web应用 在Jetty应用服务器中部署war项目很简单,只需把项目war包放入Jetty的webapps子目录即可.你都无需重启Jetty,Jetty会自动随时监听webapps目录 ...
- python 将html实体转回去
参考资料: http://www.360doc.com/content/17/0620/16/44530822_664927373.shtml https://blog.csdn.net/guzhou ...
- 简单的PL/SQl链接远程ORACLE数据库方法
简单的PL/SQl链接远程ORACLE数据库方法 PLSQL Developer新手使用教程 pasting
- sys模块的问题,深浅COPY的应用场景,元祖与购物车程序练习-打印彩色\033[31;1m--------\033[0m
打印彩色:%s为变量,格式化 print("Added %s into shopping cart,your current balance is \033[31;1m%s\033[0m&q ...
- 九 assign和subscribe
1 subscribe: 自动安排分区, 通过group自动重新的负载均衡: 关于Group的实验: 如果auto commit = true, 重新启动进程,如果是同样的groupID,从上次co ...
- jdk ssl证书
- html2pdf 中文支持问题
系统用的是HTML2PDF V4.0.3 版本 百度后 http://blog.sina.com.cn/s/blog_6b0ce0310101fdv6.html 发现中文支持不好 还是有乱码问题 解决 ...
- python 3389爆破机
前言: = =上学后的第一个星期假期,写了个3389爆破器 - 0x01 准备: hydra 钟馗之眼API 0x02代码: import optparse import os import requ ...
- Vcf文件格式
Vcf文件格式是GATK钟爱的表示遗传变异的一种文件格式. 就拿GATK给出的vcf例子说明吧,下面这个文件只表示了一个完整vcf文件的前几个SNP. 看上去确实有点复杂,那就把它分为两部分看吧,第一 ...
- [Z]QPS、PV和需要部署机器数量计算公式
QPS = req/sec = 请求数/秒 [QPS计算PV和机器的方式] QPS统计方式 [一般使用 http_load 进行统计]QPS = 总请求数 / ( 进程总数 * 请求时间 )QPS ...