Go_channel的关闭和遍历

1. 关闭管道

2. 遍历

3. 代码

package main
import (
	"fmt"
)

func main() {

	intChan := make(chan int, 3)
	intChan<- 100
	intChan<- 200
	close(intChan)
	//这是不能够再写入数到channel
	//intChan<- 300
	fmt.Println("okook~")
	//当管道关闭后,读取数据是可以的
	n1 := <-intChan
	fmt.Println("n1=", n1)

	//遍历管道
	intChan2 := make(chan int, 100)
	for i := 0; i < 100; i++ {
		intChan2<- i * 2  //放入100个数据到管道
	}

	//遍历管道不能使用普通的 for 循环
	//len()会变化
	// for i := 0; i < len(intChan2); i++ {

	// }
	//在遍历时,如果channel没有关闭,则会出现deadlock的错误
	//在遍历时,如果channel已经关闭,则会正常遍历数据,遍历完后,就会退出遍历
	close(intChan2)
	for v := range intChan2 {
		fmt.Println("v=", v)
	}

}

原文地址:https://www.cnblogs.com/yzg-14/p/12235381.html

时间: 2024-10-18 06:50:45

Go_channel的关闭和遍历的相关文章

Windows编程 - 开启/关闭/遍历程序的类 代码(C++)

开启/关闭/遍历程序的类 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 类包含4个函数, 启动程序, 遍历所有进程, 关闭程序, 遍历进程依赖的动态链接库. 示例: Image.exe是预先生成的可执行程序(exe), 启动程序, 间隔5秒, 关闭程序. 使用方法参加测试程序. 代码: /* * process.h * * Created on: 2014.06.08 * Author: Spike */ /*vs 2012*/ #ifnde

CentOS6.5下Apache防止目录遍历

原先以为CentOS下的Apache应该是默认关闭目录遍历的... 然后拿自己网站试了一下发现想太多...汗 就去改下Apache的配置 首先Apache的配置文件在 /etc/httpd/conf/httpd.conf 找到这一行: 之后把Indexes改为None即可: 保存退出后重启apache,目录访问就成403啦

【技术干货】听阿里云CDN安防技术专家金九讲SystemTap使用技巧

1.简介 SystemTap是一个Linux非常有用的调试(跟踪/探测)工具,常用于Linux 内核或者应用程序的信息采集,比如:获取一个函数里面运行时的变 量.调用堆栈,甚至可以直接修改变量的值,对诊断性能或功能问题非 常有帮助.SystemTap提供非常简单的命令行接口和很简洁的脚本语 言,以及非常丰富的tapset和例子. 2.何时使用 定位(内核)函数位置 查看函数被调用时的调用堆栈.局部变量.参数 查看函数指针变量实际指的是哪个函数 查看代码的执行轨迹(哪些行被执行了) 查看内核或者进

JS魔法堂:jQuery.Deferred(jQuery1.5-2.1)源码剖析

一.前言 jQuery.Deferred作为1.5的新特性出现在jQuery上,而jQuery.ajax函数也做了相应的调整.因此我们能如下的使用xhr请求调用,并实现事件处理函数晚绑定. var promise = $.getJSON('dummy.js') // 其他逻辑处理 promise.then(function(){ alert('late binding') }) 我还一度以为这就是Promises/A+规范的实现,但其实jQuery.Deferred应该与jsDeferred归为

python入门(1)

Python是通过python解释器执行的. 1.第一个python程序 print "hello world" # 存为hello.py文件 如何运行?在命令行下执行python hello.py执行即可. 2.变量和算数表达式 principal = 1000                         # python是弱类型语言,变量声明之前不用指定类型 rate = 0.5 numyears = 5 year = 1 while year <= numyears: 

mapreducer计算原理

mapreducer计算原理 InputFormat InputFormat的默认实现是TextInputFormat InputSplit 概念 是mapreducer对文件进行处理和运算的输入单位.只是一个逻辑概念.每一个InputSplit并没有对文件进行实际的切割.只是记录了要处理文件的位置信息(包括文件的path和 hosts.长度(length)).在默认情况下,InputSplit和Block的数目是一样的. getLength 得到一个InputSplit的长度 getLocat

Go语言学习——channel的死锁其实没那么复杂

1 为什么会有信道 协程(goroutine)算是Go的一大新特性,也正是这个大杀器让Go为很多路人驻足欣赏,让信徒们为之欢呼津津乐道. 协程的使用也很简单,在Go中使用关键字“go“后面跟上要执行的函数即表示新启动一个协程中执行功能代码. func main() { go test() fmt.Println("it is the main goroutine") time.Sleep(time.Second * 1) } func test() { fmt.Println(&quo

selenium之测试卫星资料页面操作(元素遍历)

# 测试气象卫星资料页面功能 # author:gongxr # date:2017-07-24 import random, time from selenium import webdriver from login_page import LoginPage login_obj = LoginPage() driver = webdriver.Chrome(executable_path=login_obj.driver_path) time.sleep(2) # 智能等待 driver

OAF通过Iterator标准遍历各行

这两天本人接到客户反映的bug:oaf的采购订单页面,在添加超过10行提交后,会出现空指针异常.原来,oaf的默认显示行数为10行,超过10行,页面会分页.报空指针异常,就是因为没有取到分页的行.之前的代码(AM里的某个方法),我是这样写的: ZReqLinesVOImpl zreqVO = this.getZReqLinesVO(); int rowCount = zreqVO.getRowCount(); OAException rowException = null; for (int i