首页 > 其他分享 >channel 通道错误的使用例子

channel 通道错误的使用例子

时间:2023-10-10 10:37:35浏览次数:33  
标签:int fmt chan 例子 func import main channel 通道

1.向已经关闭的通道发送值,引起panic错误

package main

import "fmt"

func recv(c chan int) {
	ret := <-c
	fmt.Println("接收成功", ret)
}
func main() {
	ch := make(chan int)
	go recv(ch) // 启用goroutine从通道接收值
	ch <- 10
	close(ch)
	ch <- 9
	fmt.Println("发送成功")
}

2.首先向通道发送值,然后在启动接受通道值的协程,引起deadlock错误

  

package main

import "fmt"

func recv(c chan int) {
    ret := <-c
    fmt.Println("接收成功", ret)
}
func main() {
    ch := make(chan int)
    ch <- 10
    go recv(ch) // 启用goroutine从通道接收值

    fmt.Println("发送成功")
}

3.向没有接受者的无缓存的通道发送值,引起deadlock错误

package main

import "fmt"

func main() {
    ch := make(chan int)
    ch <- 10

    fmt.Println("发送成功")
}

4.关闭已经关闭的通道,引起panic错误

package main

import "fmt"

func recv(c chan int) {
    ret := <-c
    fmt.Println("接收成功", ret)
}
func main() {
    ch := make(chan int)
    go recv(ch) // 启用goroutine从通道接收值
    ch <- 10

    close(ch)
    close(ch)
    fmt.Println("发送成功")
}

 

标签:int,fmt,chan,例子,func,import,main,channel,通道
From: https://www.cnblogs.com/zxqblogrecord/p/17753969.html

相关文章

  • Go通道机制与应用详解
    本文深入探讨了Go语言中通道(Channel)的各个方面,从基础概念到高级应用。文章详细解析了通道的类型、操作方法以及垃圾回收机制,更进一步通过具体代码示例展示了通道在数据流处理、任务调度和状态监控等多个实际应用场景中的作用。本文旨在为读者提供一个全面而深入的理解,以更有效地......
  • 极致科技邀您共赴2023中国国际物业管理产业博览会!(内附免费报名通道)
    10月12日至14日,由中国物业管理协会主办的物业管理行业唯一商务部报备国际展会——2023中国国际物业管理产业博览会即将在深圳会展中心(福田)8、9号馆盛大开幕。 此次博览会致力于搭建行业交流、展示、交易平台,通过多元化、多维度、多层次的展会交流,引导物业管理产业新升级。展会......
  • 国标GB28181协议平台LntonGBS如何批量删除通道?
    国标视频云服务平台LntonGBS可支持通过国标GB28181协议,接入多路视频源设备,实现视频流的接入、转码、处理与分发等功能,对外输出的视频流格式包括RTSP、RTMP、FLV、HLS、WebRTC等。平台视频能力丰富灵活,包括监控直播、视频分发、录像、回看与检索、云存储、语音对讲、告警上报、云台......
  • channel
    要点:1Channel带不带缓冲2谁在发3谁在收4谁来关5关了没 Channel有buffer和没有buffer的特点不带缓冲:要求收发两端都必须要有goroutine否则就是阻塞有buffer:缓冲没满或者没空之前都不会阻塞,缓冲满了或者空了就会阻塞 没有初始化的channel为nilchannel发送和接收......
  • 在线监测平台监测系统有哪些优势 多个监测项目的监测设备和传感器通道(测点)同时监测
    在线监测平台监测系统有哪些优势多个监测项目的监测设备和传感器通道(测点)同时监测实时监测:在线监测系统可以实时监测数据,及时发现问题,方便及时采取措施,避免事故发生。自动化:在线监测系统可以自动采集、处理和存储数据,无需人工干预,提高了监测效率和准确性。数据分析:在线监测系统......
  • 安防视频/集中云存储平台EasyCVR(V3.3)部分通道显示离线该如何解决?
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,也具备接入AI智能分析的能......
  • Android跨进程数据通道若干方案的实验笔记
    一、实验背景和目标我想做一个Android平台的跨进程数据通道,通过这个通道支持若干App之间的数据传输。我想到了一些传输方案,但是缺乏在方案中做出选型的评价依据。本实验会基于若干方案实现数据传输通道,在模拟的业务场景中进行实验,从功能性指标和非功能性指标对各方案做出评价。i.......
  • Go 语言代码示例。使用并发和通道的并行计算素数的示例代码
    Go语言代码示例。使用并发和通道的并行计算素数的示例代码:packagemainimport( "fmt")funcmain(){ lowerLimit:=2 upperLimit:=100 //创建管道,用于在协程之间传递素数 primes:=make(chanint) //创建一个协程来生成素数序列 gogeneratePrimes(primes)......
  • Metadata.allowExtensions 注解的一个实际使用例子
    @UI注解随着SAP标准的FioriElements应用一起发布。如果SAP发布的标准CDSview包含了@Metadata.allowExtensions:true的注解,意味着Partner或者其他IndustrySolution可以通过Extensionview的方式来override标准CDSview里的annotation,前提是这些Extensio......
  • adoc转换html+UPF低功耗仿真例子+python转换C代码+readmemh的@使用
    adoc转换htmladoc这种格式是很多riscv文档使用的格式,该格式可以生成pdf,生成html。生成html的好处是,选中和翻译方便,复制粘贴方便。首先是gem软件要安装,这个软件似乎是ruby相关的(RubyGemsisapackagemanagerfortheRubyprogramminglanguagethatprovidesastandardform......