背景
我是从一线开发转行到国企做信息化项目管理,朝九晚五,上班基本就是我去 ZF 那边挨骂,然后我转头去骂外包商,基本没什么事。但是我一直放不下自己的技术情节,Java 写了 10 年也腻了,就想用 golang 自己写点东西玩。
现状
我最近尝试用 golang 写一些 web 小玩意儿,但是我很难在网上找到一个适合小项目的项目结构,AI 给的也是大型化的结构。我用 fiber 和 gorm ,viper 做配置文件解析。gorm 的事务管理也比较懵,我都是 cursor 生成。
诉求
请各位针对我只搞小玩意儿的诉求,指点一个 mini 的项目结构,推荐技术选型,指点一下 gorm 的事务控制。

放下 java 思想

gf 不行么?

github.com/golang-standards/project-layout

不过小项目根本没啥必要纠结项目结构.

Kratos 的工程结构可以参考下,虽然是 rpc 框架,但是你写 web 也可以

golang-standards/project-layout 这个根本不算是好的结构:

而且这个 repo 作者可以算是 go 社区里最不要脸的了,我都不敢用“最不要脸的之一”来描述他、怕“之一”不准确:
github.com/golang-standards/project-layout/issues/117

请做个好人,不要再向别人推荐这个带来更多误导。

是的是的 孩子 你是对的

好巧,我也不喜欢这个目录结构
我是基于这个项目改的 github.com/mikestefanello/pagoda

是的是的 孩子 你是对的

其实如果自己不会好好说中文的话,可以完全去混非中文圈,看到过别人喷你、这不是糟蹋自己嘛,何必呢

如果是这样的话,那我安利下我的开源项目:

github.com/keepchen/go-sail

你是对的 👍

工程化: github.com/golang-standards/project-layout

然后看看别人项目,

github.com/go-admin-team/go-admin
github.com/GoAdminGroup/go-admin
github.com/flipped-aurora/gin-vue-admin

看懂了,会用了,就一把梭。

如果是 web 后端的话,我自己有搞一个 gitea.loveuer.com/loveuer/ultone

golang-standards/project-layout 这个根本不算是好的结构:

而且这个 repo 作者可以算是 go 社区里最不要脸的了,我都不敢用“最不要脸的之一”来描述他、怕“之一”不准确:
github.com/golang-standards/project-layout/issues/117

请做个好人,不要再向别人推荐这个带来更多误导。

建议换个用 golang 的公司

吵半天,就没人看看官方文档?

go.dev/doc/modules/layout

还有这个 go.dev/doc/

#6 我靠。我好像就是这种结构,那么有没有其他推荐结构呢?#8 给的可以吗?

有技术情节,咋个连有文档的 gorm 事务都搞不定?怎么个事儿

go 的代码没像 java 那么臃肿,这种审美问题,符合团队的标准和自己的喜好不影响效率就行。如果已经在用并且习惯了,不改也没问题,实用主义

把 gf 官方文档看完,只用 gf 一个库就行。

你这样一问,我必须推荐下自己的开源项目: github.com/WuKongIM/WuKongIM

Go 写 CRUD 可能不如 Java ,写 IM 还是很爽。

Java 推荐这个啦, goframe.org/ ,其他的慢慢来,找其他优秀项目来参考。

别骂外包,对外包好点

用过 v 友推荐的 github.com/go-nunu/nunu
个人感觉用于学习和快速开发都还不错

gorm bug 血多,建议别用

我建议你看一眼 prometheus 的源码: github.com/prometheus/prometheus
上面哪个项目代码质量能比 prometheus 好?
懂了么?根据你的项目而定,想怎么摆怎么摆,go 没那么多限制

和我一样,我也想写个 go 的项目,最后发现没有适合的项目结构,没有和 springboot 这样一统江湖的存在。

小项目直接平铺就行了,你就是想得太多

加点 internal 以及注意避免循环依赖,剩下的根据业务自己发挥了。

因为现在写代码不是我的 KPI 了,我只追求结果。不像以前还干开发的时候,要去搞懂技术细节。

我也用过 sqlx 。习惯于 java 的 mybatis ,其实都不太习惯。你有更好的推荐吗?

然而事实就是除了 grom ,每一个能打的。什么 sqlx 、xorm ,功能上根本就不如 gorm