Go channel的使用场景,用法总结 | 您所在的位置:网站首页 › spoon的用法总结 › Go channel的使用场景,用法总结 |
在介绍10种操作前,先简要介绍下channel的使用场景、基本操作和注意事项。 channel的使用场景把channel用在数据流动的地方: 消息传递、消息过滤信号广播事件订阅与广播请求、响应转发任务分发结果汇总并发控制同步与异步... channel的基本操作和注意事项channel存在3种状态: nil,未初始化的状态,只进行了声明,或者手动赋值为nilactive,正常的channel,可读或者可写closed,已关闭,千万不要误认为关闭channel后,channel的值是nilchannel可进行3种操作: 读写关闭把这3种操作和3种channel状态可以组合出9种情况: 下面介绍使用channel的10种常用操作。 1. 使用for range读channel 场景:当需要不断从channel读取数据时原理:使用for-range读取channel,这样既安全又便利,当channel关闭时,for循环会自动退出,无需主动监测channel是否关闭,可以防止读取已经关闭的channel,造成读到数据为通道所存储的数据类型的零值。用法: for x := range ch{ fmt.Println(x) } 2. 使用_,ok判断channel是否关闭 场景:读channel,但不确定channel是否关闭时原理:读已关闭的channel会返回类型的0值和false,如果不确定channel,需要使用ok进行检测。ok的结果和含义: true:读到数据,并且通道没有关闭。false:通道关闭,无数据读到。用法: if v, ok := |
CopyRight 2018-2019 实验室设备网 版权所有 |