GoForum🌐 V2EX

标题: [求推荐] 寻找开箱即用的 Go Web 模板(需 GORM + DI + 垂直切片架构),顺便探讨一下 Go 社区对 DI 的态度

yikyo · 2026-02-24 15:32 · 0 次点赞 · 16 条回复

大家好,

最近在做 Go 的 Web 项目选型,看了一圈生态里的框架,希望能找到一款偏向开箱即用的模板。想请大家推荐一下:

我理想中的框架特性:

  • 开箱即用:不想从零开始拼凑路由、日志、配置和 ORM 等基础组件,希望能有一套成熟的默认约定。

  • 深度集成依赖注入( DI ):希望框架能很好地管理对象的生命周期和依赖关系。

  • 集成 GORM:因为业务原因,需要 GORM 作为核心的数据库 ORM 工具。

  • 支持垂直切片架构( Vertical Slice Architecture ):这点极其重要!我不希望代码是按“技术职责”横向分层的(比如所有 controller 在一个包,所有 model 在一个包)。我希望框架的推荐实践是按“业务模块”来组织代码的。例如一个用户的业务,其结构应类似于:

/user
  ├── user.model.go
  ├── user.repository.go
  ├── user.service.go
  └── user.controller.go

不知道大家有没有符合上述要求的脚手架或框架推荐?

另外,还有一个疑惑想和大家交流讨论:

在研究 Go Web 框架和各种开源模板的过程中,我发现一个现象:在 Go 语言生态中,大家似乎对“依赖注入( DI )”并不是特别热衷?

在 Java (Spring) 或 C# (.NET) 里,DI 几乎是刻在骨子里的标配,不使用 IoC 容器简直没法写代码。

想听听老哥们的看法,为什么 Go 的社区风气对 DI 容器显得比较克制?

是因为 Go 强调的“大道至简( Keep it simple )”和显式编程哲学?

是手动传递依赖在 Go 里写起来并没有那么繁琐?

还是说使用反射( Reflection )做运行期 DI 在 Go 中有什么性能隐患或难以调试的坑?

期待大家的框架推荐以及对 DI 问题的看法,提前感谢!

前提,本人对 go 语言没有任务基础,也是最近刚尝试使用。上面的讨论如有不当之处,请多多包涵。

16 条回复
NoobPhper · 2026-02-24 15:37
#1

把一件复杂的事情做简单是件很难得事情, 不要平白无故的增加 系统熵

viking602 · 2026-02-24 15:42
#2

社区里用 ent 的居多 我们自己也是用的 ent gorm 的话我建议是自己搓一个脚手架 自己搓的才是最符合自己需求的

Ayanokouji · 2026-02-24 15:42
#3

推荐这个项目,进行定制自己的 template 。https://github.com/samber/do-template-api

Gilfoyle26 · 2026-02-24 15:47
#4

go 的 Web 还有可选的嘛,除了 gin 还能选择什么?

不过我是直接手搓 web 框架,极致的手工业。

yikyo · 2026-02-24 15:47
#5

@Ayanokouji @viking602

感谢,我晚点去看一下

yikyo · 2026-02-24 15:47
#6

@Gilfoyle26 年后才开始接触 go ,扡 gin fiber echo iris 都看了一下。

aapeli · 2026-02-24 15:47
#7

@yikyo #6 我的意见是能不用 DI 就不用 DI ,用 AI 做 Code 生成,没必要再增加一步 DI 过程。

lifei6671 · 2026-02-24 15:52
#8

@yikyo #6 推荐一个邪修 go web 框架:goframe ,这个框架有点反人类。https://i.imgur.com/NIvxivj.png

yikyo · 2026-02-24 15:52
#9

@NoobPhper 刚接触 go 有点不适应。跟我的想象中的不一样。

yikyo · 2026-02-24 15:52
#10

@lifei6671 不搞。。。怕搞坏了。。。

Dorathea · 2026-02-24 15:57
#11

GIN 应该可以满足你的大部分需求, ORM 有对应的库(GORM)

至于 DI 的问题, 可以了解下 golang 的 interface

Immortal · 2026-02-24 16:02
#12

不明白为什么上面说 GoFrame 是邪修. 写 Go 快 10 年了,从一开始的 Martini/Beego 时代,到后面折腾 gin/echo 一类”路由框架”,也用过 go-zero 和 GoFrame. 现在 web 项目如果没有特殊要求我就默认用 GoFrame 了.

Gin/Echo/Chi 一类就像我上面说的更像”路由框架”.作为轻量级的 Web 框架有利就有弊 如果项目不是按传统的 MVC 这类架构来展开,需要使用 DDD 这样的,那么基本只能选这类框架自己搭建脚手架. 容易上手写写小项目,但是做中大型项目需要一些底子来组织文件/项目的结构,不然越写越乱. 还有 Model 层需要自己去找合适的.Gorm/Ent/Sqlc 这类,个人推荐 Echo+Sqlc

写到后期其实 Web 基本就那么一回事.Router->Logic(Controller)->Service(公用逻辑封装)->Model. Go-Zero/GoFrame 基本都做到了这些,GoFrame 的 Model 感觉比 Gorm 一类更方便,所以推荐.

OrangeAdd · 2026-02-24 16:12
#13

个人实际工作下来,大部分项目其实都是一个路由框架( Gin )、ORM 框架( GORM )就够用了,需要啥基本都是 new 一个就可以了。

Immortal · 2026-02-24 16:17
#14

@Immortal #12 是我审题不清了. OP 情况那就 Echo+Gorm 吧

gitrebase · 2026-02-24 16:22
#15

Go 里的 DI 没有一个像 Java 里的 DI 那么好用,真不如在 main.go 里手搓几行 new(XxxService)

bingo084 · 2026-02-24 16:22
#16

垂直切片架构这个,我之前也很想用,但是发现按这样分包之后,很容易出现循环依赖,然而 go 里又不允许包循环依赖。。不知道怎么搞,最后还是横向分层了。

添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: yikyo
发布: 2026-02-24
点赞: 0
回复: 0