Go- Buffer Channel- Select-基础理解
时间:2022-05-04
本文章向大家介绍Go- Buffer Channel- Select-基础理解,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
这篇主要讲Select这个有用的关键字用来监听管道顺带讲下带缓冲的Channel
带缓冲的Channel
Channel是可以带有缓冲的 c := make(chan int,3) 这么声明则代表这个管道里最多同时可以放三个int类型的数据
如下代码所示
package main
func main() {
c := make(chan int,3)
c <- 1
c <- 1
c <- 1
<span style="white-space:pre"> </span>//c <- 1 如果再加上这一句则会报错 因为无法同时放入四个int类型数据
<- c
<- c
<- c
}
Select
Go提供了select关键字用于监听各个通道
比如我要取通道1中的数据并且是一有数据我就取出来 那我们该如何实现呢
这是就可以借助select 用来监听一旦有数据进来select自动帮你取数据出来 还是挺方便的一个功能
package main
import (
"time"
"fmt"
)
func main() {
o := make(chan int)
c := make(chan int)
go func() {
for {
select {
case a := <- c://监听c管道只要一有数据进来 就打印出来
fmt.Println(a)
//这里After返回 <-chan Time 也就是监听 <-chan Time这个管道
//如果超过5秒钟 如果select一直未收到消息 那么 就会给<-chan Time通道发送一个消息
//每隔5秒就会发送一次
case <- time.After(5 * time.Second):
o <- 0
break //仅仅是跳出select循环并未跳出for循环
}
}
} ()
for i := 0; i<100 ; i++{
c <- i
}
<- o //接收消息
}
- zabbix监控在lnmp环境下编译安装小记
- 【重磅】百度开源分布式深度学习平台,挑战TensorFlow (教程)
- WordPress评论ajax动态加载,解决静态缓存下评论不更新问题
- WordPress显示访客UA信息:Show UserAgent纯代码轻度汉化版
- WordPress开启颜色评论但不造成XSS漏洞的小方法
- WordPress强迫症技巧:让文章(ID)地址完美连续(障眼法)
- iOS内存管理:从MRC到ARC实践
- MySQL错误修复:Table xx is marked as crashed and last (automatic?) repair failed
- PHP跨站脚本攻击(XSS)漏洞修复方法(一)
- Windows下获取网络连线实际名称,加强IP类设置脚本的兼容性
- Android APP 快速 Pad 化实现
- PHP彩蛋还是漏洞?expose_php彩蛋的触发和屏蔽方法
- 深入源码探索 ReactNative 通信机制
- PHP跨站脚本攻击(XSS)漏洞修复思路(二)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Tensorflow简单CNN实现详解
- 应用服务器安装手册
- python 读取文件函数
- Tkinter Menubar
- python pickle模块
- 吴恩达机器学习笔记18-逆矩阵、矩阵转置
- Tkinter messagebox弹窗
- 'utf-8' codec can't decode byte 0xff in position 0
- iOS今日头条第3轮面试回忆
- Python:os.path.join()产生的斜杠在Windows和Linux下的不同表现和解决方法
- python 深复制和浅复制详解
- Octave入门之数据操作—ML Note28
- matlab导出csv文件多种方法实现
- matlab面向对象编程基础
- Octave数据运算基础教程-ML Note29