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作为参数

相关推荐
谢亮_vipxieliang2 分钟前
Go 并发控制进阶:sync 包高级原语与 Context 生命周期管理
开发语言·后端·golang
谢亮_vipxieliang1 小时前
Go GMP调度模型——从原理到实战的完整指南
开发语言·网络·golang
谢亮_vipxieliang2 小时前
Go Context 控制协程生命周期
开发语言·golang
JWASX2 小时前
Java 转 go 学习 - kitex(2)
学习·golang
福兮说2 小时前
IP 地址转整数的七个坑:192.168.1.1 算出负数、127.1 也是合法地址、存进 INT 直接溢出
javascript·网络·网络协议·tcp/ip·mysql·golang
JWASX4 小时前
Java 转 go 学习 - GRPC(3)
学习·golang
谢亮_vipxieliang5 小时前
Go 并发安全性保障
服务器·网络·golang
汤米粥5 小时前
后端开发主流技术方案
java·python·golang·php·nodejs·后端开发
JWASX5 小时前
Java 转 go 学习 - Redis(1)
学习·golang
JWASX5 小时前
Java 转 go 学习 - Redis(2)
学习·golang