• 引用类型
  • 零值 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 类型用法相关推荐

  1. VTK:actors的类型用法实战

    VTK:actors的类型用法实战 程序输出 程序完整源代码 程序输出 程序完整源代码 #include <vtkActor.h> #include <vtkActorCollect ...

  2. python字典类型举例_python 字典类型用法

    python 字典类型用法 info={ 'name':'唐家三少', 'age':180 } info2={ 'name':'冰火魔厨' 'love':'nice' } 1 popitem取出字典中 ...

  3. enum枚举类型用法

    文章目录 1. 枚举类型和枚举变量 1.1 枚举类型的定义和声明 1.2 枚举变量的定义和声明 2. 枚举变量和枚举常量的关联对应 3. 枚举类型和变量的应用 3.1 作为判断语句中的逻辑 3.2 一 ...

  4. python利用集合的无重复性_python集合类型用法分析

    本文实例分析了python集合类型用法.分享给大家供大家参考.具体分析如下: python的集合类型和其他语言类似, 是一个无序不重复元素集,我在之前学过的其他的语言好像没有见过这个类型,基本功能包括 ...

  5. 枚举类型用法_Mybatis-plus常见用法总结三

    前面已经介绍了Mybatis-plus基本用法,今天为大家分享一些Mybatis-plus高级应用 逻辑删除 自动注入 枚举类型处理 Sql注入器 多租户 表结构 CREATE TABLE `sys_ ...

  6. C++ auto类型用法总结

    转载自https://blog.csdn.net/xiaoquantouer/article/details/51647865 一.用途 auto是c++程序设计语言的关键字.用于两种情况 (1)声明 ...

  7. RedisTemplate操作redis五大类型用法详解(springboot整合redis版本)

    1.案例说明 springboot整合redis之后,提供了操作redis的简便方式 通过通用对象redisTemplate方式操作String,Hash,List,Set SortSet五大数据类型 ...

  8. excel Match函数不同匹配类型用法解析

    MATCH 函数可在特定的搜索区域搜索指定值,并返回指定值在搜索区域中的相对位置. 语法结构 MATCH(lookup_value, lookup_array, [match_type]) 通俗说法: ...

  9. springboot整合elasticJob实战(纯代码开发三种任务类型用法)以及分片系统,事件追踪详解...

    一 springboot整合 介绍就不多说了,只有这个框架是当当网开源的,支持分布式调度,分布式系统中非常合适(两个服务同时跑不会重复,并且可灵活配置分开分批处理数据,贼方便)! 这里主要还是用到zo ...

  10. TypeScript里的自定义类型用法

    新建一个index.ts: type NumGenerator = (input: number) => number;function myFunc(numGenerator: NumGene ...

最新文章

  1. 一份用动画演示操作系统的各个过程的资料
  2. 第十六届全国大学生智能车竞赛百度智慧交通竞赛成绩
  3. J2ME程序开发新手入门九大要点
  4. linux无锁化编程
  5. MySQL - 体系结构初探
  6. 使用CSS完美实现垂直居中的方法
  7. “李子柒”们的商业模式,到底需不需要微念
  8. 【Pytorch神经网络实战案例】06 逻辑回归拟合二维数据
  9. “新一代互联网安全(BII)管理:理论与实践研讨会”在西安交通大学成功举办...
  10. 【Java】时间的新旧比较
  11. android java内存 c内存_Android NDK java和C\C++交互 | 学步园
  12. linux读取一行数据命令,常用的linux命令和逐行数据处理的例子
  13. 慕课-现代通信技术-知识点记录
  14. 丧心病狂!最新NLP模型的写作水平已突破次元壁
  15. 服务器后台日志文件的清理经验分享
  16. a += 1、a = a + 1、a++区别
  17. 发送手机短信验证码-后端、前端(验证码倒计时)
  18. java简单搭建分布式架构
  19. 《The One!团队》第八次作业:ALPHA冲刺(一)
  20. steam游戏的计算机要求,吃鸡最低配置(《绝地求生》Steam官方公布:吃鸡最低电脑配置要求)...

热门文章

  1. 百度街景自动爬取,并自动检测没有影像的位置
  2. 孤独求败:美国海军邀黑客“黑掉军舰”
  3. [Unity特效]使用Projector投影仪来制作角色脚下的特效圆环以及技能指示器skill indicator
  4. 常用坐标系汇总(更新)
  5. 短视频代运营服务内容
  6. 用asp.net发送电子邮件
  7. lbp2900打印机linux驱动下载,lbp2900打印机驱动下载x64 (canon lbp2900驱动canon lbp2900打印机驱动)下载 - 下载吧...
  8. 自动发射子弹c语言,C语言实现简单飞机大战
  9. 关键字const有什么含意?
  10. 《天才在左,疯子在右》读后感