首页 > 其他 > 详细

golang channle close() x,ok := <- c

时间:2018-12-04 00:27:58      阅读:252      评论:0      收藏:0      [点我收藏+]

close为内置函数

close内置函数关闭一个通道channle,其效果为:在最后的值从已关闭的信道中被接收后,任何对其的接收操作都会无阻塞的成功。对于已关闭的信道使用v,ok := <-  c还会将ok设置为false。

package main

import (
	"fmt"
)

func main() {

	var chan1 = make(chan int, 2)

	chan1 <- 10
	chan1 <- 20
	close(chan1)
	<-chan1

	v, ok := <-chan1
	fmt.Println(v, ok)
}

技术分享图片

当最后一个值从已关闭的clannle中被接受后返回 false,可以用来判断channle执行完成。

package main

import (
	"fmt"
)

func main() {

	var chan1 = make(chan int, 2)

	chan1 <- 10
	chan1 <- 20
	close(chan1)
	<-chan1
	<-chan1

	v, ok := <-chan1
	fmt.Println(v, ok)
}

技术分享图片

当在接收未关闭的channle时,返回死锁

技术分享图片

 

golang channle close() x,ok := <- c

原文:https://www.cnblogs.com/LC161616/p/10061828.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!