chan

chan又称之为通道,形式类似于管道,内容从一头被送进去,从另一头被读取出来。下边来介绍定义通道的方法:

var 变量名 chan dataType

定义通道时,需要指定数据类型,就是只允许这个指定数据类型的变量通过这个通道。

初始化通道

golang中在初始化通道类型变量时,可以将通道分为两种情况,一种是带缓冲的通道,另一种是不带缓冲的通道。
下边来介绍下两种情况的初始化方法:

// 初始化不带缓冲的通道,通道中数据类型是int
var ch1 = make(chan int)// 初始化带10个缓冲的通道,通道中数据类型是string
var ch2 = make(chan string,10)

还有一种写法是,定义并初始化通道,

// 定义通道,并给通道初始化8个缓冲
ch3 := make(chan int ,8)// 定义通道,并初始化为不带缓冲通道
ch4 := make(chan string)

通道赋值

对通道的读取和写入都可能进入阻塞状态。

  1. 不带缓冲的通道,在写入时,就会发生阻塞,直到通道中信息被读取后,才会结束阻塞。
  2. 带缓冲的通道,每次向通道中写入一次信息,通道长度就会加1,每成功从通道读取一次信息,通道长度减1。如果通道长度等于通道缓冲长度时,向通道继续写入信息会使程序阻塞;如果通道长度小于通道

Go关键字--chan相关推荐

  1. Go 学习笔记(24)— 并发(03)[通道特点、通道声明、通道发送/接收/关闭、单向通道]

    1. 通道概念 chan 是 Go 语言里面的一个关键宇,是 channel 的简写,翻译为中文就是通道. goroutine 是 Go 语言里面的并发执行体,通道是 goroutine 之间通信和同 ...

  2. java 高级数据类型_【高级数据类型】- 2.通道的更多种类

    Go语言-通道的更多种类 我们在上一节所说的通道,实际上只是Go语言中的通道的一种.它被称为带缓冲的通道,或简称为缓冲通道. 通道有带缓冲和非缓冲之分.我们已经说过,缓冲通道中可以缓存N个数据.我们在 ...

  3. Golang 笔记 1 基础、基本数据类型

    一.Go语言基础 1. 基础 Go语言中的标识符必须以字母(Unicode字母,PHP/JS可以用中文作为变量名)下划线开头.大写字母跟小写字母是不同的:Hello和hello是两个不同的名字.    ...

  4. go语言中channel的创建和销毁以及匿名函数的使用

    channel的创建 go语言中,任意类型前面加上关键字chan即可声明对应类型的通道,创建通道需要使用make,make也用于map 和slice的创建 创建一个通道 /*刚创建的通道是nil*/ ...

  5. 《Go语言圣经》学习笔记 第八章 Groroutines和Channels

    <Go语言圣经>学习笔记 第八章 Groroutines和Channels 目录 Goroutines 实例:并发的Clock服务 实例:并发的Echo服务 Channels 并发的循环 ...

  6. 大道至简—GO语言最佳实践

    导读:2007年,受够了C++煎熬的Google首席软件工程师Rob Pike纠集Robert Griesemer和Ken Thompson两位牛人,决定创造一种新语言来取代C++, 这就是Golan ...

  7. Go 语言学习笔记(一):基础知识

    目录 语言简介 初识 Go 程序 Go 词法单元 变量和常量 复合数据类型 语言简介 已经有那么多种编程语言了,为什么还要发明新语言?为什么还要去学习新语言?相信不少人都有这样的疑问.答案很简单,虽然 ...

  8. Golang基础知识入门详解

    Go语言入门 Go语言入门教程 很多人将 Go 语言 称为 21 世纪的 C 语言,因为 Go 不仅拥有 C 语言的简洁和性能,而且还很好的提供了 21 世纪互联网环境下服务端开发的各种实用特性,让开 ...

  9. Channels In Go

    女主宣言 Go有两个重要的内置功能,同时也是它的特性.分别是channel.Goroutine.这两个特性使Go编写并发程序变的简单.有趣.本文将主要介绍channel.原文来自go101,本文是翻译 ...

  10. 《Go 语言程序设计》读书笔记 (五) 协程与通道

    Goroutines 在Go语言中,每一个并发的执行单元叫作goroutine.设想一个程序中有两个函数,假设两个函数没有相互之间的调用关系.一个线性的程序会先调用其中的一个函数,然后再调用另一个.如 ...

最新文章

  1. Linux 小知识翻译 - 「NTP」
  2. 对用户数据进行简单的管理用,C++实现几个字符串的字典序排序
  3. 第4.3节 Python中与迭代相关的函数
  4. mysql 设置utf8mb4_mysql配置utf8_mb4
  5. Oracle数据库个人整理常用的表空间、用户、授权操作
  6. 如何把Web缓存都充分利用上来?
  7. 微信小程序组件 自定义单选
  8. vue---数据列表循环
  9. SharePoint 2013连接非默认端口的SQL Server
  10. R语言-数据包络分析法--DEA模型
  11. MATLAB常用的滤波函数比较:均值滤波 和 中值滤波
  12. Java事务处理总结
  13. Github多人协作
  14. 从 Web2 社交面临的挑战看,Web3 为何能够取而代之
  15. Typora初步学习
  16. CSS 学习成长笔记(1)
  17. 手把手教你给KEGG pathway图标注颜色
  18. linux查看电脑硬件信息,怎么在linux下查看电脑硬件设备属性和各种信息
  19. 一文道破 结构体,枚举,联合
  20. 鸿翔dsp开发板学习笔记(1)

热门文章

  1. html仿苹果桌面导航js css,JS+CSS仿苹果手机(Iphone)的滑动效果的焦点图
  2. 电脑键盘打字跳转计算机,电脑键盘打字方法
  3. orcad 连mysql_OrCAD Capture CIS元件库用mysql数据库
  4. C1. Skyscrapers (从easy到hard)
  5. python hist2d_具有二维数组的Python Matplotlib Hist2d
  6. 2D基本知识入门学习
  7. 【报表福利大放送】100余套报表模板免费下
  8. android电视接跳舞毯,跳舞毯怎么连接电视以及注意事项
  9. 计算机网络顺口溜,一到十的顺口溜祝福语
  10. ido 0.5 发布