go中对通道chan遍历有两种方式一种是用range另一种为for select。

  

package main

import (
"fmt"
"strings"
) func main() {
intChan0 := make(chan int, 10) for i := 0; i < 10; i++ {
intChan0 <- i
}
close(intChan0) for i := range intChan0 {
fmt.Printf("range i value is %d, pointer is %d\n", i, &i)
} fmt.Println(strings.Repeat("-", 20)) intChan1 := make(chan int, 10) for i := 0; i < 10; i++ {
intChan1 <- i
}
close(intChan1) forLoop:
for {
select {
case i, ok := <-intChan1:
if !ok {
break forLoop
}
fmt.Printf("for select i value is %d, pointer is %d\n", i, &i)
}
} }

上面打印结果为

range i value is 0, pointer is 824633794752
range i value is 1, pointer is 824633794752
range i value is 2, pointer is 824633794752
range i value is 3, pointer is 824633794752
range i value is 4, pointer is 824633794752
range i value is 5, pointer is 824633794752
range i value is 6, pointer is 824633794752
range i value is 7, pointer is 824633794752
range i value is 8, pointer is 824633794752
range i value is 9, pointer is 824633794752
--------------------
for select i value is 0, pointer is 824633794760
for select i value is 1, pointer is 824633794768
for select i value is 2, pointer is 824633794776
for select i value is 3, pointer is 824633794784
for select i value is 4, pointer is 824633794792
for select i value is 5, pointer is 824633794800
for select i value is 6, pointer is 824633794808
for select i value is 7, pointer is 824633794816
for select i value is 8, pointer is 824633794824
for select i value is 9, pointer is 824633794832

使用golang版本为1.21,可以看出,rang读取chan内元素,其指针一样,for select每次不同。

通常情况下,当有其他for select有其他case分支使用for select。

  

go两种遍历chan的更多相关文章

  1. HashMap的两种遍历方式

    HashMap的两种遍历方式 HashMap存储的是键值对:key-value . java将HashMap的键值对作为一个整体对象(java.util.Map.Entry)进行处理,这优化了Hash ...

  2. Map的两种遍历方式

    ********************************************************************************* ****************** ...

  3. HashMap两种遍历方式的深入研究

    转自:http://swiftlet.net/archives/1259 HashMap的遍历有两种方式,如下所示:第一种利用entrySet的方式:   1 2 3 4 5 6 7 Map map ...

  4. HashMap两种遍历数据的方式

    HashMap的遍历有两种方式,一种是entrySet的方式,另外一种是keySet的方式. 第一种利用entrySet的方式: Map map = new HashMap(); Iterator i ...

  5. Map集合的两种遍历方式

    Map集合:即 接口Map<K,V> map集合的两种取出方式:    1.Set<k> keyset: 将map中所有的键存入到set集合(即将所有的key值存入到set中) ...

  6. Java HashMap两种遍历方式

    第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Ma ...

  7. python中的字典两种遍历方式

    dic = {"k1":"v1", "k2":"v2"} for k in dic: print(dic[K]) for ...

  8. hashmap两种遍历方法

    第一种:使用entryset来进行遍历 Map map=new HashMap(); Iterator iter=map.entrySet().iterator(); while(iter.hasNe ...

  9. dict两种遍历方法

    采用for...in...遍历: >>> for i in dd: ... print("%s:%s"%(i,dd[i])) ... :chen :hang :w ...

  10. 图的两种遍历:DFS&BFS

    DFS和BFS在图中的应用: 图连通性判定:路径的存在性:图中是否存在环:求图的最小生成树:求图的关键路径:求图的拓扑排序. DFS:简单的说,先一直往深处走,直到不能再深了,再从另一条路开始往深处走 ...

随机推荐

  1. STM32F103和STM32F401的ADC多通道采集DMA输出

    使用STM32F103和STM32F401CCU6对双轴摇杆(两个电压通道)进行ADC采样并通过DMA读取数值 STM32 ADC(模数转换)工作模式 单次转换模式 In Single Convers ...

  2. Ubuntu下SSH管理及SFTP下载工具Muon(Snowflake)

    简介 Muon其实更像是一个基于ssh的服务器管理工具, 界面中有PAC Manager的影子, 集成了文件管理, ssh命令行, 服务器性能监测和工具包等功能. 因为这个工具的编写语言是Java, ...

  3. keras建模的3种方式——序列模型、函数模型、子类模型

    1 前言 keras是Google公司于2016年发布的以tensorflow为后端的用于深度学习网络训练的高阶API,因接口设计非常人性化,深受程序员的喜爱. keras建模有3种实现方式--序列模 ...

  4. win32-EnumChildWindows的使用

    #include <Windows.h> #include <iostream> #include <string> static BOOL CALLBACK en ...

  5. win32 - Shell菜单项的创建

    #include <windows.h> #include <shobjidl_core.h> #include <windowsx.h> #include < ...

  6. time模块,os操作系统及os模块和shutil模块用法---day16

    1.时间模块 import time time.time() 获取本地时间戳 localtime() 获取本地时间元组,参数是时间戳,默认不写是当前 ***** mktime() 通过时间元组获取时间 ...

  7. 通过paramiko模块操作服务器

    用于帮助开发者通过代码远程连接服务器,并对服务器进行操作. 如果下面运行错误了,可以看我另外一篇文章有解决办法解决paramiko连接远程服务器错误 pip3 install paramiko imp ...

  8. 在矩池云使用Llama2-7B的方法

    今天给大家分享如何在矩池云服务器使用 Llama2-7b模型. 硬件要求 矩池云已经配置好了 Llama 2 Web UI 环境,显存需要大于 8G,可以选择 A4000.P100.3090 以及更高 ...

  9. 【Azure Logic App】消费型逻辑应用在消费Service Bus时遇见消息并发速度慢,消息积压

    问题描述 消费型逻辑应用(Consumption Logic App)使用触发器模式消费 Azure Service Bus的消息,当Service Bus中存在大量消息等待消费时,Logic App ...

  10. 【Azure 环境】Azure CLI 获取Access Token的脚本实例

    问题描述 如何使用azure CLI命令获取到中国区的Access Token呢? 问题解答 首先,需要通过 az cloud set --name AzureChinaCloud 来设置登录中国区的 ...