gorm.DB是全局变量可能带来的问题

gorm.DB是全局变量可能带来的问题

如题gorm.DB是global/global.go下的全局变量,那么我们在调用下面这个分页代码查询数据的时候,如果这个时候有另外一个请求进来也是分页查询的请求,那么这两个分页会不会存在覆盖冲突的问题

func Paginate(page, pageSize int) func(db *gorm.DB) *gorm.DB {
    return func(db *gorm.DB) *gorm.DB {
        if page == 0 {
            page = 1
        }
        
        switch {
        case pageSize > 100:
            pageSize = 100
        case pageSize <= 0:
            pageSize = 10
        }
        
        offset := (page - 1) * pageSize
        return db.Offset(offset).Limit(pageSize)
    }
}

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
bobby 2023-12-02 22:13:35

不会的,这是线程安全的

  • 提问者 曹学习 #1

    为什么是线程安全的诶,因为我是java转的go,在我看来这里的代码没有加锁,又是全局唯一变量,那么针对它的状态修改操作应该是线程不安全才对啊

    2023-12-03 14:45:17
  • bobby 回复 提问者 曹学习 #2

    不一定要变量线程安全,因为你要调用的是方法,这里的方法线程安全就可以了

    2023-12-07 09:53:18
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Go开发工程师全新版
  • 参与学习       493    人
  • 解答问题       572    个

风口上的技术,薪资水平遥遥领先,现在学习正值红利期! 未来3-5年,Go语言势必成为企业高性能项目中不可替代的语言 从基础到项目实战再到重构,对转行人员友好,真正从入门到精通!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师