码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-12-04 00:56:50      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:img   close   main   .com   完成   lse   关闭   分享   fun   

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

标签:img   close   main   .com   完成   lse   关闭   分享   fun   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!