Golang - 对未初始化的的chan进行读写,会怎么样?为什么?
写未初始化的chan
package main
// 写未初始化的chan
func main() {
var c chan int
c <- 1
}
结果分析
读写未初始化的chan都会阻塞。原因:
- 未初始化的chan此时是等于
nil
,当它不能阻塞的情况下,直接返回false
,表示写 (读)chan
失败 - 当chan能阻塞的情况下,则直接阻塞
gopark(nil, nil, waitReasonChanSendNilChan, traceEvGoStop, 2)
, 然后调用throw(s string)
抛出错误,其中waitReasonChanSendNilChan
就是刚刚提到的报错"chan send (nil chan)"
分类:
Golang
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」