golang 开发过程中的坑

1. chan数据读取写入

 正常情况下chan读取写入都没有问题,但是如果chan关闭之后会出现问题

 所以读取chan数据的时候需要增加chan是否关闭的判断

c := make(chan int, 1)
v, ok := <- c
 if ok {
  ....
} 

 

向一个已经关闭的chan写入数据,程序直接会panic

 

2. chan变量之间的对比

 由于chan的实现机制,chan其实内部实现就是一个指针, chan默认都是走引用的方式。 

c1 := make(chan int, 1)
c2 := c1

以上代码可以说明:

c1 和 c2 指向的内容是相同的(指针指向的内容),但是&c1 != &c2 ; c1和c2各自独立占用4字节的内存,他们指向内容是相同的

如果需要判断c1是否等于c2直接使用如下方式判断:

if c1 == c2 {

}

 

posted @   davygeek  阅读(601)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2016-02-23 必须熟悉的vim快捷键操作
点击右上角即可分享
微信分享提示