我是从一线开发转行到国企做信息化项目管理,朝九晚五,上班基本就是我去 ZF 那边挨骂,然后我转头去骂外包商,基本没什么事。但是我一直放不下自己的技术情节,Java 写了 10 年也腻了,就想用 golang 自己写点东西玩。
我最近尝试用 golang 写一些 web 小玩意儿,但是我很难在网上找到一个适合小项目的项目结构,AI 给的也是大型化的结构。我用 fiber 和 gorm ,viper 做配置文件解析。gorm 的事务管理也比较懵,我都是 cursor 生成。
请各位针对我只搞小玩意儿的诉求,指点一个 mini 的项目结构,推荐技术选型,指点一下 gorm 的事务控制。
1
root71370 14 小时 54 分钟前
放下 java 思想
|
![]() |
2
xxmaqzas 14 小时 52 分钟前
gf 不行么?
|
![]() |
3
laikick 14 小时 50 分钟前
|
![]() |
4
laikick 14 小时 49 分钟前
不过小项目根本没啥必要纠结项目结构.
|
5
layxy 14 小时 48 分钟前
Kratos 的工程结构可以参考下,虽然是 rpc 框架,但是你写 web 也可以
|
![]() |
6
lesismal 14 小时 26 分钟前 ![]() @laikick golang-standards/project-layout 这个根本不算是好的结构:
而且这个 repo 作者可以算是 go 社区里最不要脸的了,我都不敢用“最不要脸的之一”来描述他、怕“之一”不准确: https://github.com/golang-standards/project-layout/issues/117 请做个好人,不要再向别人推荐这个带来更多误导。 |
8
Ayanokouji 14 小时 2 分钟前 ![]() |
![]() |
10
wogogoing 13 小时 58 分钟前
|
12
sn0wdr1am 13 小时 50 分钟前
|
![]() |
13
loveuer 13 小时 49 分钟前
如果是 web 后端的话,我自己有搞一个 https://gitea.loveuer.com/loveuer/ultone
|
![]() |
14
laikick 13 小时 49 分钟前
@sn0wdr1am golang-standards/project-layout 这个根本不算是好的结构:
而且这个 repo 作者可以算是 go 社区里最不要脸的了,我都不敢用“最不要脸的之一”来描述他、怕“之一”不准确: https://github.com/golang-standards/project-layout/issues/117 请做个好人,不要再向别人推荐这个带来更多误导。 |
![]() |
15
voidmnwzp 13 小时 46 分钟前 via iPhone
建议换个用 golang 的公司
|
![]() |
16
mengzhuo 13 小时 46 分钟前 ![]() |
![]() |
18
lasuar 13 小时 44 分钟前 ![]() 有技术情节,咋个连有文档的 gorm 事务都搞不定?怎么个事儿
|
![]() |
19
lesismal 13 小时 42 分钟前
@yiqiao go 的代码没像 java 那么臃肿,这种审美问题,符合团队的标准和自己的喜好不影响效率就行。如果已经在用并且习惯了,不改也没问题,实用主义
|
![]() |
20
body007 13 小时 38 分钟前 ![]() 把 gf 官方文档看完,只用 gf 一个库就行。
|
![]() |
21
wkong 13 小时 33 分钟前
你这样一问,我必须推荐下自己的开源项目: https://github.com/WuKongIM/WuKongIM
|
![]() |
22
wkong 13 小时 32 分钟前
Go 写 CRUD 可能不如 Java ,写 IM 还是很爽。
|
![]() |
23
MagicLi 13 小时 30 分钟前
Java 推荐这个啦,https://goframe.org/ ,其他的慢慢来,找其他优秀项目来参考。
|
![]() |
24
Hilalum 13 小时 27 分钟前 ![]() 别骂外包,对外包好点
|
![]() |
25
R0sin 13 小时 22 分钟前
用过 v 友推荐的 https://github.com/go-nunu/nunu
个人感觉用于学习和快速开发都还不错 |
26
strobber16 13 小时 19 分钟前 via Android
gorm bug 血多,建议别用
|
![]() |
27
pkoukk 13 小时 2 分钟前 ![]() 我建议你看一眼 prometheus 的源码: https://github.com/prometheus/prometheus
上面哪个项目代码质量能比 prometheus 好? 懂了么?根据你的项目而定,想怎么摆怎么摆,go 没那么多限制 |
28
sakurawzt 13 小时 1 分钟前
和我一样,我也想写个 go 的项目,最后发现没有适合的项目结构,没有和 springboot 这样一统江湖的存在。
|
![]() |
29
gufeng311 12 小时 57 分钟前
小项目直接平铺就行了,你就是想得太多
|
30
ninjashixuan 12 小时 54 分钟前
加点 internal 以及注意避免循环依赖,剩下的根据业务自己发挥了。
|
32
thisisgpy OP @strobber16 我也用过 sqlx 。习惯于 java 的 mybatis ,其实都不太习惯。你有更好的推荐吗?
|
33
Jinnrry 12 小时 13 分钟前
@strobber16 然而事实就是除了 grom ,每一个能打的。什么 sqlx 、xorm ,功能上根本就不如 gorm
|
![]() |
34
Nazz 11 小时 48 分钟前
建议使用全局变量, 显式控制服务加载顺序避免依赖循环, 路由和请求处理, 输入输出定义, 业务逻辑放一个包内
|
![]() |
35
Nazz 11 小时 47 分钟前
路由框架就用 gin
|
36
lysShub 11 小时 20 分钟前
我去 50k 的星星,绝对是刷的
|
![]() |
37
biu7 10 小时 34 分钟前
快教教我们怎么去国企做信息化项目管理,工资咋样?(项目结构用 kratos 或者 gf 的就行)
|
![]() |
38
biu7 10 小时 31 分钟前
话说这么多层楼,orm 没有一个用 ent 的吗?
|
![]() |
39
gitrebase 10 小时 28 分钟前
在 Go “使用 struct 或 func 需要加上 package 包名前缀”的前提下,建议扁平化组织结构:即以一个领域为一个 package ,将各个文件**扁平地**分布在这个文件夹下(没必要就不需要加第二层文件夹)
|
![]() |
40
qloog 10 小时 27 分钟前
|
![]() |
41
wangritian 10 小时 7 分钟前
goframe 不错很多人推荐了,小项目建议只分 controller service model 三层
|
![]() |
42
zhoujx 9 小时 59 分钟前
你写的代码量有多少?很复杂吗?如果只是玩玩的,直接不用分目录了,直接干
|
![]() |
43
zhoujx 9 小时 58 分钟前
先平铺,以后项目大了再找个合适的框架再调整就行了
|
45
bulo 9 小时 29 分钟前
工作十年还在纠结语言??
|
47
fxjson 8 小时 13 分钟前
https://github.com/fanqingxuan/go-gin, 我自己用 gin+gorm+go-redis 库开发的一个开箱即用框架,个人感觉比较适合小项目
|
48
bug123 8 小时 12 分钟前
写了十几年 golang ,都是一把梭哈
- view -- base -- ... - static -- js -- css -- ... - controller -- ... - utils -- ... main.go run.sh ... |
49
thisisgpy OP @bulo 我是不再依靠写代码维生,也没太多兴致去探索技术。现在只是还有一点情怀,想着方便自己,做点小东西,所以看 golang 简洁,就想着拿来用。至于说帖子的主题,其实也是没有从 java 复杂的项目结构思维中脱离出来,所以来提问寻求指点。
|
51
strobber16 8 小时 3 分钟前 via Android
@thisisgpy 没有,建议放弃 orm ,用标准库 sql
|
52
xfurther01 7 小时 48 分钟前
https://github.com/zeromicro/go-zero
这个国内的开源项目,基本上和我现在公司自研的一套在思想上大同小异 |
53
qq1340691923 7 小时 48 分钟前
如果不忙的话并且想学 go 的话,可以用 go 给 ElasticView 写插件,插件模板工程地址: https://github.com/1340691923/eve-plugin-vue3-template
|
54
durban126 7 小时 38 分钟前
|
![]() |
55
Felldeadbird 7 小时 5 分钟前 ![]() 写 go 把 go 当成面向过程,全是在调用函数 就没那么大负担了。
gorm 事务不是很简单吗。跟着文档声明就好了。 |
56
extrem 6 小时 39 分钟前
理解你的想法,但是建议你多想想为什么要这么做
就是说,要写代码直接去写就好了,不是一定遵循什么“项目结构”才能写,如果说项目到了那个地步你自然不会再纠结这个问题 另外,别用 gorm ,直接用最原始的 sql 拓展如 sqlx |
![]() |
57
linyuyizhizou 6 小时 31 分钟前
建议学学 Rails 。
|
![]() |
58
CinHaiZio 5 小时 30 分钟前
pkg 放公用, 框架 初始化方法, 工具类, 配置, app 放业务逻辑, 什么 ctrl,service 可以塞这,其他玩意也可以塞这, app/cmd 放启动的,
完啦, 加个 script, config, resource, 加个 deploy 放 nginx.conf,dockercompose 模块化就/app/{module}/cmd/main.go 咯 |
59
kevinpendragon 5 小时 14 分钟前
其实大佬写小项目也是一把梭。。。结构本身不是很值得纠结的东西
|