go 关闭通道的必要性

结论:

1. 遍历一个未关闭的channel会造成死循环

2. 即使关闭了一个非空通道,我们仍然可以从通道里面接收到未读取的数据

3. 可以这样理解,close()函数会往channel中压入一条特殊的通知消息,可以用来通知channel接收者不会再收到数据。所以即使channel中有数据也可以close()而不会导致接收者收不到残留的数据

4. channel不需要通过close释放资源,只要没有goroutine持有channel,相关资源会自动释放

实验如图(上面是未执行close()的,造成死锁下面是执行了close()的,正常遍历结束):

代码如下:

package main
import "fmt"

func main() {
	ch := make(chan int, 10)
	ch <- 1
	ch <- 2
	ch <- 3

	// 关闭函数非常重要,若不执行close(),那么range将无法结束,造成死循环
	// close(ch)

	for v := range ch {
		fmt.Println(v)
	}
}

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Golang 短信通道是使用 Go 语言开发的一种用于发送短信的通信工具。在现代社会中,短信通道是一种非常重要和常用的通信方式,它不仅可以用于个人之间的短信互通,还用于企业之间或企业与用户之间的信息传递。 使用 Golang 进行短信通道的开发具有以下几个优点: 1. 快速高效:Go 语言是一种编译型语言,具有非常高的执行效率和处理速度。在短信通道中,高效的执行速度和处理能力可以确保短信的及时发送和接收,保证通信的实时性。 2. 并发支持:Go 语言内置并发机制,使用轻量级的 goroutine 和通道(channel) 可以很方便地实现并发操作。在短信通道中,这种并发支持可以同时处理多个短信请求,提高短信的发送速度和通道的处理能力。 3. 代码简洁易读:Go 语言注重代码的简洁性和可读性,在语法设计上追求简单清晰。使用 Go 语言进行短信通道的开发,代码量相对较少,易于维护和理解。 4. 跨平台兼容:Go 语言的编译器能够生成可执行文件,使得开发的应用程序可以在不同的操作系统平台上运行。这样,使用 Golang 开发的短信通道可以在多个平台上使用,提高了通信的灵活性和可用性。 总的来说,Golang 短信通道是一种高效、可靠、并发支持的通信工具,在各种应用场景中都能展现出良好的性能和稳定性。它不仅可以用于个人之间的短信交流,还广泛应用于企业之间的业务通信和各种机构与用户之间的信息传递中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值