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

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时,返回死锁

 

转载于:https://www.cnblogs.com/LC161616/p/10061828.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值