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

相关推荐
平凡但不平庸的码农1 天前
Go context 包详解
开发语言·后端·golang
~|Bernard|1 天前
三,go语言中channel的底层原理
开发语言·后端·golang
且去填词1 天前
Go并发模式进阶:从Worker Pool到可取消任务调度器
数据库·oracle·golang
平凡但不平庸的码农1 天前
Go 语言:值传递 vs 指针传递
开发语言·后端·golang
平凡但不平庸的码农2 天前
Go Slice 详解
算法·golang
jieyucx2 天前
零基础入门:一文看懂哈希算法、哈希表与 Go map
golang·哈希算法·散列表·map·哈希表
Achou.Wang2 天前
go 语言条件变量和信号量
golang
平凡但不平庸的码农2 天前
Go 语言基础语法
开发语言·后端·golang
讲不出 再见2 天前
go语言-包
golang·go·package··包冲突
ErizJ2 天前
Go|腾讯面经总结
开发语言·后端·golang