ZBLOG

golang chan 尝试发送,发送失败则不阻塞如何写

在Go语言中,可以使用select关键字来实现非阻塞发送。具体做法是,在select语句中同时监听要发送的数据和一个空的通道。如果要发送的通道已满,那么这个case就会被忽略;而如果空的通道接收到了一个值,那么程序就会执行这个case。

下面是示例代码:

package main

import (
	"fmt"
)

func main() {
	ch := make(chan int, 1) // 带缓冲的通道,容量为1

	// 尝试发送数据
	select {
	case ch <- 1:
		fmt.Println("数据发送成功!")
	default:
		fmt.Println("数据发送失败!")
	}

	// 尝试再次发送数据
	select {
	case ch <- 2:
		fmt.Println("数据发送成功!")
	default:
		fmt.Println("数据发送失败!")
	}
}

在这个示例中,我们创建了一个带有容量为1的缓冲通道ch。然后,在第一个select语句中尝试向该通道中发送值为1的数据。由于该通道此时为空且有容量,因此这个case会被执行,并输出“数据发送成功!”。

接着,在第二个select语句中尝试再次向该通道中发送值为2的数据。但由于该通道此时已经包含了值为1的元素,因此这个case会被忽略,并输出“数据发送失败!”。

这就是一种非阻塞发送数据的方法。如果您还有其他问题,可以继续问我哦!

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=2562

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?