gin框架传入的gin.context参数是池化的

  1. gin.context参数不但是池化的,而且是指针

  2. 但是gin.context又实现了context的接口。因此,可以当作context去使用

  3. 这就会导致一个很严重的问题:

  4. 池化导致了复用后的ctx将会将之前使用的ctx中的内容进行覆盖。

  5. 实现了context接口,导致context.withvalue(*gin.context,key,value).并不会有编译错误

具体我在解决问题时,采用register的方式,将全部的http请求注册到统一入口处。统一入口,将*gin.Context转化为context.Background(),调用controller。将context作为参数传递,而不再使用*gin.Context作为参数

相关推荐
花酒锄作田7 小时前
Go - 注册表工厂模式的简单实现
golang
圣殿骑士-Khtangc19 小时前
Go-Map面试核心考点从哈希冲突到并发安全的完整解析
面试·golang·哈希算法
worxfr19 小时前
Go 并发控制:从 Channel 方向约束到实战模式
开发语言·后端·golang
xcLeigh19 小时前
Go入门:短变量声明的陷阱与最佳实践
java·redis·golang·教程·变量
JavaPub-rodert20 小时前
我又把自己的 Go 后台管理系统升级了一遍:文件管理、2GB 上传、私有文件预览、Docker 镜像全安排上了
开发语言·docker·golang·shiyuadmin
名字还没想好☜20 小时前
Go 的 sync.Cond 实战:用条件变量做等待/通知,比忙轮询省 CPU
开发语言·数据库·后端·golang·go
圣殿骑士-Khtangc1 天前
Go-Select多路复用机制的面试真题与底层实现
开发语言·面试·golang
啊哈一半醒2 天前
Go 语言 Context 全方位详解:原理、实战与避坑
开发语言·后端·golang
名字还没想好☜2 天前
Go 的 io.Reader/Writer 组合实战:io.Copy、TeeReader、MultiWriter 优雅处理数据流
开发语言·后端·golang·go·iphone