go chan 类型用法
- 引用类型
- 零值 nil
- <发送/写>型 chan<-
- <接收/读>型 <-chan
- 双向型 chan
- 构造/初始化 make()
- 关闭 close()
- 判等 ==
- <发送/写>数据 chan <- send_date
- <接收/读>数据 recv_data := <- chan
- chan 关闭或有数据,读操作不阻塞
- chan 未关闭且无数据,读操作阻塞
例子
package mainimport "fmt"func main() {//双向型 chan, 零值 nilvar ch chan int//输入型 chan->var ci chan<- int//输出型 <-chanvar co <-chan int//make()cc := make(chan int, 10)ch = cc//双向型赋值给单向型正确ci = chco = ch//单向型赋值给双向型错误//ch = ci //❌//ch = co //❌fmt.Println(ci, co, ch) //0xc00008c000 0xc00008c000 0xc00008c000//可以赋值 -> 类型兼容 -> 可以判等b1 := ch == ccb2 := ci == nilb3 := ch == cib4 := ch == co//不可以赋值 -> 类型不兼容 -> 不可以判等// b5 := ci == co //❌fmt.Println(ci, co, cc, ch) //0xc00008c000 0xc00008c000 0xc00008c000 0xc00008c00fmt.Println(b1, b2, b3, b4) //true false true true//chan 发送/写ch <- 1//chan 接收/读out := <-chfmt.Println(out) // 1ch <- 1//close(), chan 关闭close(ch) //关闭后读操作不阻塞//chan 关闭后,还有数据.读操作,返回 数据 和 trueout1, ok1 := <-ch//chan 关闭后,没有数据.读操作,返回 零值 和 falseout2, ok2 := <-chfmt.Println(out1, ok1, out2, ok2) // 1 true 0 falsch = make(chan int, 0)//chan 没关闭,无数据,读操作阻塞out = <-chfmt.Println("上一句阻塞了!!!打印不出这行了?!!!")}
输出
0xc00008c000 0xc00008c000 0xc00008c000
0xc00008c000 0xc00008c000 0xc00008c000 0xc00008c000
true false true true
1
1 true 0 false
fatal error: all goroutines are asleep - deadlock!goroutine 1 [chan receive]:
main.main()i:/github.com/gkt_cc_go/src/example/chan/chan.go:68 +0x508
exit status 2
go chan 类型用法相关推荐
- VTK:actors的类型用法实战
VTK:actors的类型用法实战 程序输出 程序完整源代码 程序输出 程序完整源代码 #include <vtkActor.h> #include <vtkActorCollect ...
- python字典类型举例_python 字典类型用法
python 字典类型用法 info={ 'name':'唐家三少', 'age':180 } info2={ 'name':'冰火魔厨' 'love':'nice' } 1 popitem取出字典中 ...
- enum枚举类型用法
文章目录 1. 枚举类型和枚举变量 1.1 枚举类型的定义和声明 1.2 枚举变量的定义和声明 2. 枚举变量和枚举常量的关联对应 3. 枚举类型和变量的应用 3.1 作为判断语句中的逻辑 3.2 一 ...
- python利用集合的无重复性_python集合类型用法分析
本文实例分析了python集合类型用法.分享给大家供大家参考.具体分析如下: python的集合类型和其他语言类似, 是一个无序不重复元素集,我在之前学过的其他的语言好像没有见过这个类型,基本功能包括 ...
- 枚举类型用法_Mybatis-plus常见用法总结三
前面已经介绍了Mybatis-plus基本用法,今天为大家分享一些Mybatis-plus高级应用 逻辑删除 自动注入 枚举类型处理 Sql注入器 多租户 表结构 CREATE TABLE `sys_ ...
- C++ auto类型用法总结
转载自https://blog.csdn.net/xiaoquantouer/article/details/51647865 一.用途 auto是c++程序设计语言的关键字.用于两种情况 (1)声明 ...
- RedisTemplate操作redis五大类型用法详解(springboot整合redis版本)
1.案例说明 springboot整合redis之后,提供了操作redis的简便方式 通过通用对象redisTemplate方式操作String,Hash,List,Set SortSet五大数据类型 ...
- excel Match函数不同匹配类型用法解析
MATCH 函数可在特定的搜索区域搜索指定值,并返回指定值在搜索区域中的相对位置. 语法结构 MATCH(lookup_value, lookup_array, [match_type]) 通俗说法: ...
- springboot整合elasticJob实战(纯代码开发三种任务类型用法)以及分片系统,事件追踪详解...
一 springboot整合 介绍就不多说了,只有这个框架是当当网开源的,支持分布式调度,分布式系统中非常合适(两个服务同时跑不会重复,并且可灵活配置分开分批处理数据,贼方便)! 这里主要还是用到zo ...
- TypeScript里的自定义类型用法
新建一个index.ts: type NumGenerator = (input: number) => number;function myFunc(numGenerator: NumGene ...
最新文章
- 一份用动画演示操作系统的各个过程的资料
- 第十六届全国大学生智能车竞赛百度智慧交通竞赛成绩
- J2ME程序开发新手入门九大要点
- linux无锁化编程
- MySQL - 体系结构初探
- 使用CSS完美实现垂直居中的方法
- “李子柒”们的商业模式,到底需不需要微念
- 【Pytorch神经网络实战案例】06 逻辑回归拟合二维数据
- “新一代互联网安全(BII)管理:理论与实践研讨会”在西安交通大学成功举办...
- 【Java】时间的新旧比较
- android java内存 c内存_Android NDK java和C\C++交互 | 学步园
- linux读取一行数据命令,常用的linux命令和逐行数据处理的例子
- 慕课-现代通信技术-知识点记录
- 丧心病狂!最新NLP模型的写作水平已突破次元壁
- 服务器后台日志文件的清理经验分享
- a += 1、a = a + 1、a++区别
- 发送手机短信验证码-后端、前端(验证码倒计时)
- java简单搭建分布式架构
- 《The One!团队》第八次作业:ALPHA冲刺(一)
- steam游戏的计算机要求,吃鸡最低配置(《绝地求生》Steam官方公布:吃鸡最低电脑配置要求)...
热门文章
- 百度街景自动爬取,并自动检测没有影像的位置
- 孤独求败:美国海军邀黑客“黑掉军舰”
- [Unity特效]使用Projector投影仪来制作角色脚下的特效圆环以及技能指示器skill indicator
- 常用坐标系汇总(更新)
- 短视频代运营服务内容
- 用asp.net发送电子邮件
- lbp2900打印机linux驱动下载,lbp2900打印机驱动下载x64 (canon lbp2900驱动canon lbp2900打印机驱动)下载 - 下载吧...
- 自动发射子弹c语言,C语言实现简单飞机大战
- 关键字const有什么含意?
- 《天才在左,疯子在右》读后感