golang通道中 nil通道 close通道的特性点

本文详细探讨了Golang中通道(channel)的一些关键特性,包括nil通道的关闭会引发panic,接收者不应关闭通道以免导致发送者在发送时panic,多个发送者时应避免或谨慎关闭通道,不再使用的通道可以依赖GC回收,通道与select的配合使用,以及使用单向通道进行双向通信等。同时,文章提到了Dave Cheney的四个通道公理,强调了对nil通道的操作和关闭通道的影响。
摘要由CSDN通过智能技术生成

英文原文

C1. 以下操作会引起panic
  • P1. Closing the nil channel.

实例:

func C1P1() {
    var ch chan int
    close(ch)
}

结果

panic: close of nil channel

goroutine 1 [running]:
panic(0x458300, 0xc82000a170)
        /home/wdy/go/src/runtime/panic.go:464 +0x3e6
main.main()
        /home/wdy/learn/program-learn/golang/learnchannel.go:27 +0x1e
exit status 2
  • P2. Closing a closed channel.

实例:

func C1P2() {
    ch := make(chan int, 0)
    close(ch)
    close(ch)
}

结果:

panic: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值