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. 源码剖析Spring依赖注入:今天你还不会,你就输了

    在之前的讲解中,我乐意将源码拿出来并粘贴在文章中,让大家看一下.然而,我最近意识到这样做不仅会占用很多篇幅,而且实际作用很小,因为大部分人不会花太多时间去阅读源码. 因此,从今天开始,我将采取以下几个 ...

  2. NC16671 [NOIP2006]金明的预算方案

    题目链接 题目 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算, ...

  3. 基于HTTP2/3的流式请求/响应如何实现?

    我想很多人已经体验过GRPC提供的三种流式消息交换(Client Stream.Server Stream和Duplex Stream)模式,在.NET Core上构建的GRPC应用本质上是采用HTT ...

  4. 端口碰撞Port Knocking和单数据包授权SPA

    端口碰撞技术 Port knocking 从网络安全的角度,服务器开启的端口越多就越不安全,因此系统安全加固服务中最常用的方式,就是先关闭无用端口,再对提供服务的端口做访问控制.而作为远程管理与维护的 ...

  5. Java中各种比较对象方式对比

    1.介绍 比较对象是面向对象编程语言的一个基本特征.在本教程中,我们将介绍Java语言的一些特性,这些特性允许我们比较对象.此外,我们还将研究外部库中的这些特性. 2.==和!=操作符 让我们从==和 ...

  6. 跨越千年医学对话:用AI技术解锁中医古籍知识,构建能够精准问答的智能语言模型,成就专业级古籍解读助手(LLAMA)

    跨越千年医学对话:用AI技术解锁中医古籍知识,构建能够精准问答的智能语言模型,成就专业级古籍解读助手(LLAMA) 介绍:首先在 Ziya-LLaMA-13B-V1基线模型的基础上加入中医教材.中医各 ...

  7. wsl 配置ubuntu apt源为阿里源

    $ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak $ sudo sed -i 's/security.ubuntu/mirrors.a ...

  8. win32-ReadProcessMemory在x86和x64下运行

    #include <iostream> #include <Windows.h> #include <winternl.h> #include <tchar. ...

  9. 小红书 x Hugging Face 邀请你一起晒「创意新春照」

    不藏了,近期全网爆火的AI 写真项目 InstantID,正是来自小红书社区技术创作发布团队. 为了迎接龙年春节的到来,我们的InstantID全新推出「Spring Festival」新春风格!并与 ...

  10. Ansible Ad-hoc,命令执行模块

    目录 Ad-hoc Ad-hoc简介 Ad-hoc命令说明 Ad-hoc示例 命令执行模块 1. command模块 2. shell模块 3. raw模块 4. script模块 Ad-hoc Ad ...