该如何设计 Golang 的项目结构才清晰易于使用?

2023-02-11 19:13:16 +08:00
 maotao456

就像下面的目录结构一样, 同时存在多个 User 包, 那么其结果在使用的时候就很混乱,要仔细小心不要引用错了包。 各位老哥哥,有什么好的办法来解决这种情况呢?

Controller - User (目录) Service - User (目录) Model - User (目录)

1967 次点击
所在节点    程序员
10 条回复
chenxiankong
2023-02-11 19:17:22 +08:00
我们实践的时候是这样的.
controller
- controller_user
service
- service_user
model
- model_user
maotao456
2023-02-11 19:21:18 +08:00
@chenxiankong 这样不就感觉很别扭吗?
chevalier
2023-02-11 19:27:48 +08:00
realpg
2023-02-11 19:29:16 +08:00
UserController
UserService
UserModel
Huelse
2023-02-11 19:54:16 +08:00
不用想的太复杂,只需要思考顶层分类即可
FrankAdler
2023-02-11 20:14:30 +08:00
可以把代码都组织到对应的 struct 下面,比如
router 都 controller 用 userEntry.xxx 这样,
control 到 service 用 userService.xxx 这样
util 用 stringUtil.xxx 这样
不会引用错,代码也可放同一个目录,提前定义一个 type xxEntry 然后 init 里面自己初始化成单例就行
GTim
2023-02-11 20:17:09 +08:00
@chevalier https://makeoptim.com/golang/clean-architecture 这文章里的第一张图片用的是什么主题? Visual Studio Code 的
Cola98
2023-02-11 21:06:37 +08:00
https://v2ex.com/t/865330#reply27 可以看下我之前发的帖子?
matrix1010
2023-02-11 21:11:02 +08:00
这类问题我都建议参考 Grafana( https://github.com/grafana/grafana/tree/main/pkg), 一般来说你的项目不可能比 Grafana 更复杂
liarsa
2023-02-12 15:33:16 +08:00
我自己现在的项目就两层
---
| - app
|----xxx
|---api
|---cmd
|--- ...
| - lib

lib 放通用,app 下面自己鼓捣,看心情

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/915219

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX