Go channel的使用场景,用法总结 您所在的位置:网站首页 spoon的用法总结 Go channel的使用场景,用法总结

Go channel的使用场景,用法总结

2024-06-27 04:54| 来源: 网络整理| 查看: 265

在介绍10种操作前,先简要介绍下channel的使用场景、基本操作和注意事项。

channel的使用场景

把channel用在数据流动的地方:

消息传递、消息过滤信号广播事件订阅与广播请求、响应转发任务分发结果汇总并发控制同步与异步... channel的基本操作和注意事项

channel存在3种状态:

nil,未初始化的状态,只进行了声明,或者手动赋值为nilactive,正常的channel,可读或者可写closed,已关闭,千万不要误认为关闭channel后,channel的值是nil

channel可进行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 实验室设备网 版权所有