使用通道发送和接收数据

本文详细介绍了Go语言中通道(Channel)如何发送和接收数据。包括通道发送数据的格式,发送数据失败时的阻塞情况,以及接收数据的各种方式如阻塞接收、非阻塞接收和遍历接收。通过示例代码展示了如何使用通道进行并发同步,并解释了通道在并发编程中的重要性。
摘要由CSDN通过智能技术生成

前面已经说过通道的简介以及具体使用,那么通道是如何收发数据的,今天就和大家聊下。

发送数据

通道发送数据的格式

通道的发送使用特殊的操作符<-,将数据通过通道发送的格式为:

通道变量 <- 值

  • 通道变量:通过make创建好的通道实例。
  • :可以是变量、常量、表达式或者函数返回值等。值的类型必须与ch通道的元素类型一致。

示例:

使用 make 创建一个通道后,就可以使用<-向通道发送数据,代码如下:

// 创建一个空接口通道
ch := make(chan interface{
   })

// 将0放入通道中
ch <- 0

// 将hello字符串放入通道中
ch <- "hello"
发送数据失败持续阻塞直到数据被接收

把数据往通道中发送时,如果接收方一直都没有接收,那么发送操作将持续阻塞。Go 程序运行时能智能地发现一些永远无法发送成功的语句并做出提示,代码如下:

 package  main


 func main() {
       

 // 创建一个整型通道   
 ch := make(chan int)    
 
 // 尝试将0通过通道发送 
 ch <- 0
    
 }

运行代码,报错:

fatal 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值