最近在学习 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,
})
![]() |
1
CoderGeek 10 天前
一直在用 uber-go/fx
|
![]() |
2
ultimate42 OP @CoderGeek 我也是用的 fx ,因为对 go 不熟悉,代码还是参考 ai 的,勉强算是跑起来了
|
![]() |
3
fgk 10 天前
一个人写就全局变量,方便。
多人协同依赖注入,避免问题 |
4
fruitmonster 10 天前
我最开始就是用的全局变量,初始化的时候全部都初始化为全局变量,然后 Gemini 一顿给我优化,优化的晚就是依赖注入,感觉全局变量更容易理解,依赖注入更容易单元测试
|
![]() |
5
huiyifyj 10 天前 ![]() wire 依赖注入
|
6
hwdq0012 10 天前
应该抽象的就依赖注入没啥 好说的, 全局变量+里氏替换 不如直接依赖注入
|
![]() |
7
darksword21 10 天前
如果你在写的项目是公司的并且已经很大了且已经有依赖注入的机制那就依赖注入
其他时候:全局变量 |
![]() |
8
bv 10 天前
1. 不要 x 场景用全局变量,y 场景用依赖注入,就养成个用依赖注入的习惯。
2. 依赖注入框架不一定要用什么框架。 |
9
changz 10 天前 via Android
全局变量写飞容易出现 cycle import 问题
|
10
moooooooo 10 天前
这是 or 的问题吗?为什么要用全局变量啊
|
![]() |
12
ultimate42 OP @moooooooo 我是新手呀,在参考 gin-vue-admin 的实现,但这个项目我看着很难受。数据库字段是驼峰和下划线连接混用,返给客户端的数据也是大小写开头都有
|
13
wfhtqp 10 天前
context
|
![]() |
14
MagicLi 10 天前
看一个比较简单的依赖库,https://github.com/samber/do
wire 适合大规模项目。 |
15
5261 10 天前
这也是之前遇到的问题,目前还是用 fx 依赖注入,只不过写的时候有点麻烦
|
![]() |
16
Gilfoyle26 10 天前
|
![]() |
17
fgwmlhdkkkw 9 天前 via Android
|
18
changz 9 天前 via Android
@picone 我说的是“全局变量容易出现 cycle import”,而不是“依赖注入能解决什么问题”。而且是“容易”,不是“一定会”。至于为什么,这是工程实践问题,麻烦自己问一下 ai 。
|
19
meepolee 2 天前
可以对比 gin-vue-admin 和 gin-admin 的代码感受下依赖注入和全局的异同,项目小,全局足以,多人合作或者项目大了,依赖注入是最好的
|