最近在学习 go 语言,在使用 db 和限定返回结果时,先是参照了 gin-vue-admin,使用了全局变量,这样使用的确很简单,但每次都要引入全局包,看站内帖子又说不使用依赖注入不好做单元测试,所以你们倾向哪种方案?
// hanlder
resp := response.PageResponse{
    List:     users,
    Total:    total,
    Page:     p,
    PageSize: ps,
}
response.SuccessPage(c, resp)
// service
global.DB.First...
// hanlder
// func (h *UserHandler)...
resp := h.PageResponse()
resp.List = users
resp.Total = total
resp.Page = req.Page
resp.PageSize = req.PageSize
h.SuccessPage(c, resp)
// service 
// func (userService *UserService) ...
userService.db.first...
    
c.JSON( http.StatusOK, gin.H{
    "list":     users,
    "total":    total,
    "page":     req.Page,
    "pageSize": req.PageSize,
})
|  |      1CoderGeek      86 天前 一直在用 uber-go/fx | 
|  |      2ultimate42 OP @CoderGeek 我也是用的 fx ,因为对 go 不熟悉,代码还是参考 ai 的,勉强算是跑起来了 | 
|  |      3fgk      86 天前 一个人写就全局变量,方便。 多人协同依赖注入,避免问题 | 
|      4fruitmonster      86 天前 我最开始就是用的全局变量,初始化的时候全部都初始化为全局变量,然后 Gemini 一顿给我优化,优化的晚就是依赖注入,感觉全局变量更容易理解,依赖注入更容易单元测试 | 
|  |      5fengyj      86 天前  1 wire 依赖注入 | 
|      6hwdq0012      86 天前 应该抽象的就依赖注入没啥 好说的,  全局变量+里氏替换   不如直接依赖注入 | 
|  |      7darksword21 PRO 如果你在写的项目是公司的并且已经很大了且已经有依赖注入的机制那就依赖注入 其他时候:全局变量 | 
|  |      8bv      86 天前 1. 不要 x 场景用全局变量,y 场景用依赖注入,就养成个用依赖注入的习惯。 2. 依赖注入框架不一定要用什么框架。 | 
|      9changz      86 天前 via Android 全局变量写飞容易出现 cycle import 问题 | 
|      10moooooooo      86 天前 这是 or 的问题吗?为什么要用全局变量啊 | 
|  |      12ultimate42 OP @moooooooo 我是新手呀,在参考 gin-vue-admin 的实现,但这个项目我看着很难受。数据库字段是驼峰和下划线连接混用,返给客户端的数据也是大小写开头都有 | 
|      13wfhtqp      86 天前 context | 
|  |      14MagicLi      86 天前 看一个比较简单的依赖库,https://github.com/samber/do wire 适合大规模项目。 | 
|      155261      86 天前 这也是之前遇到的问题,目前还是用 fx 依赖注入,只不过写的时候有点麻烦 | 
|  |      16Gilfoyle26      86 天前 | 
|  |      17fgwmlhdkkkw      86 天前 via Android | 
|      18changz      85 天前 via Android @picone 我说的是“全局变量容易出现 cycle import”,而不是“依赖注入能解决什么问题”。而且是“容易”,不是“一定会”。至于为什么,这是工程实践问题,麻烦自己问一下 ai 。 | 
|      19meepolee      78 天前 可以对比 gin-vue-admin 和 gin-admin 的代码感受下依赖注入和全局的异同,项目小,全局足以,多人合作或者项目大了,依赖注入是最好的 |