专栏首页陶士涵的菜地[Go] golang的range循环遍历通道

[Go] golang的range循环遍历通道

range循环会无限在channels上面迭代

package main

import (
	"fmt"
	"time"
)

func main() {

	//创建一个通道
	ch := make(chan int)
	//开启一个goroutine
	go func() {
		//无限循环
		for {
			//往通道里发送数据
			ch <- 1
			//睡眠一秒
			time.Sleep(time.Second)
		}
	}()
	//无限循环从通道中读取数据
	for i := range ch {
		fmt.Println(i)
	}

}

和下面的无限读取是等价的

package main

import (
	"fmt"
	"time"
)

func main() {

	//创建一个通道
	ch := make(chan int)
	//开启一个goroutine
	go func() {
		//无限循环
		for {
			//往通道里发送数据
			ch <- 1
			//睡眠一秒
			time.Sleep(time.Second)
		}
	}()
	//无限循环从通道中读取数据
	for {
		i, ok := <-ch
		if !ok {
			break
		}
		fmt.Println(i)
	}
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [PHP] RBAC权限与审批流的简单数据库构想

    陶士涵
  • [android] 界面切换的核心方法

    View ==> ViewGroup ==> RelativeLayout,主体部分使用RelativeLayout作为占位

    陶士涵
  • [日常] 20号日常工作总结

    批量删除群发列表 批量删除邮箱地址 (传递以逗号分隔的字符串如 21,22 或者传递一维数组如 id[]=21&id[]=22) (使用array_keys和a...

    陶士涵
  • 20181013_ARTS_week16

    这题没好好审题,题目中说不能增加其它空间,以及要在原数组中改,没注意最后只要前 n 位是无重复的就可以了。

    Bob.Chen
  • 用JS开发跨平台桌面应用,从原理到实践

    使用Electron开发客户端程序已经有一段时间了,整体感觉还是非常不错的,其中也遇到了一些坑点,本文是从【运行原理】到【实际应用】对Electron进行一次系...

    ConardLi
  • Istio 学习笔记:Istio CNI 插件

    当前实现将用户 pod 流量转发到 proxy 的默认方式是使用 privileged 权限的 istio-init 这个 init container 来做的...

    imroc
  • 美国霸权提出“乾净网络”计划,中国发起《全球数据安全倡议》欢迎各方积极参与

    “8月5日,美国国务卿蓬佩奥曾提出“乾净网络”计划,不论是电信业、电缆业、应用程序、云端服务等领域都拒绝中国供应商参与。

    数据猿
  • ui5里周期性检查window size大小的变化

    UI5框架里使用this.setInterval注册了一个每隔200毫秒(Core._I_INTERNAL)执行的job:

    Jerry Wang
  • Yii2下使用微信分享JSDK

    素描
  • ios 百度地图获取GPS

    百度地图默认返回 百度经纬度坐标,如需要返回GPS坐标则设置CoordinateType

    赵哥窟

扫码关注云+社区

领取腾讯云代金券