当前位置: 首页 > ai >正文

bug记录::= 给全局变量赋值导致出现panic

InitRedis 方法里这一行:

rc, err := redisFactory.New()

会导致你虽然声明了一个包级变量 rc

var rc *redis.RedisClient

但在 InitRedis 函数内部,因为前面加了 :=,这里的 rc 是一个"新的局部变量",而不会把你全局的 rc 赋值。所以你在外面 rc 一直为 nil。

这会导致调用 checkRateLimitedLoadMysqlDataToRedis 时 redis 实际上是未初始化的,每次都会再次进 InitRedis,而且 rc 其实全程为 nil。

你应该这样写

var err error
rc, err = redisFactory.New()

直接给全局变量赋值,不要用 :=,要用 =

修改后完整的那几行:

    rc, err = redisFactory.New()if err != nil {// ...}

总结

  • 不要用 := 给全局变量赋值!
  • 函数内部如果想设置全局变量,要用 =

你还可以加一行确保设置没问题

fmt.Printf("全局rc地址: %p\n", rc)

在每次用 rc 前打一下这个,看看是不是同一个 rc。


这种容易犯的错误建议你可以加静态检查和代码 Review,防止生产出事故~


http://www.xdnf.cn/news/14788.html

相关文章:

  • Python大模型应用开发实践 - 初探
  • 金融系统中常用的FIX协议
  • 【三维重建】Flow Distillation Sampling:使用匹配先验的正则3DGS
  • 【阿里巴巴JAVA开发手册】IDE的text file encoding设置为UTF-8; IDE中文件的换行符使用Unix格式,不要使用Windows格式。
  • 物联网中的Unity/Unreal引擎集成:数字孪生与可视化控制
  • RabbitMQ 高级特性之死信队列
  • C++完美转发:实现高效的参数传递
  • 「日拱一码」017 深度学习常用库——TensorFlow
  • AI知识图谱在行业的应用
  • 微信小程序——skyline版本问题
  • 设计模式(九)
  • {{ }}和v-on:click
  • 两级缓存 Caffeine + Redis 架构:原理、实现与实践
  • Bean属性转换框架深度对比:从BeanUtils到MapStruct的演进之路
  • 【AI News | 20250702】每日AI进展
  • 修改阿里云vps为自定义用户登录
  • 大数据救公益:数字时代下的社会力量如何玩转“数据+善意”
  • 项目——视频共享系统测试
  • Element UI 完整使用实战示例
  • 【Python】图像识别的常用功能函数
  • c++ 的标准库 --- std::
  • 使用numpy的快速傅里叶变换的一些问题
  • x86汇编语言入门基础(三)汇编指令篇1 逻辑位运算
  • 6. 常见K线形态(楔形与旗形)
  • docker 介绍
  • redis缓存三大问题分析与解决方案
  • 在银河麒麟V10 SP1上手动安装与配置高版本Docker的完整指南
  • 归并排序详解
  • 【网工|知识升华版|实验】4 DHCP原理及应用
  • 数据结构20250620_数据结构考试