从其他语言转 Go,沿用以前的习惯,一直采用传统的 MVC 结构,大致如下:
.
├── controller
│ ├── post
│ └── user
├── go.mod
├── main.go
├── model
│ ├── post
│ └── user
├── route
│ ├── post
│ └── user
└── service
├── post
└── user
看到有人采用如下的结构,感觉更加符合 Go 语言的代码目录风格
.
├── go.mod
├── main.go
├── post
│ ├── controller
│ ├── model
│ ├── route
│ └── service
└── user
├── controller
├── model
├── route
└── service
不知道各位项目中采用的是哪种目录结构,希望 Gopher 能给些参考,多谢多谢
1
jeesk 2022-10-21 09:52:07 +08:00
看领导, 只有统一就好了。
|
2
kongkongyzt 2022-10-21 10:09:08 +08:00
除了向外暴露的 api 接口在根目录下有一个叫 api 的目录,其他的代码都收到 internal 目录中
|
3
winnie2012 2022-10-21 10:18:19 +08:00
两种结构都可以,第二种更加边界更加内聚一些,方便改为微服务或者 Serverless
|
4
Asakijz 2022-10-21 10:20:09 +08:00
|
5
angrylid 2022-10-21 10:24:20 +08:00 via Android
我用第二种架构碰到过循环引用的问题。(不代表它不好只是我比较菜)
|
6
dqzcwxb 2022-10-21 10:37:35 +08:00 2
面向对象设计,增加项目可读性降低开发和维护成本
面向过程开发,会导致重复劳动但是方便团队分工从而提升整体效率 |
7
dudubaba 2022-10-21 10:46:22 +08:00
个人偏向第二种,移出模块只需要按目录就行了,不用每个文件夹里找。
|
9
mantis 2022-10-21 10:48:28 +08:00
@kongkongyzt 同意
|
10
SimbaPeng 2022-10-21 12:23:54 +08:00
|
11
slert 2022-10-21 12:25:30 +08:00
这和语言关系不大吧 看个人喜好
|
12
matrix1010 2022-10-21 12:25:59 +08:00 via iPhone
建议参考 grafana
|
13
sophos 2022-10-21 12:41:20 +08:00
|
14
wildlife 2022-10-21 13:09:19 +08:00
|
15
RedBeanIce 2022-10-21 13:25:26 +08:00
第二种
|
16
zhuweiyou 2022-10-21 13:44:45 +08:00
看具体情况吧.
我们基本是一个大项目下面,各自负责自己的模块(比如加一个活动就新增一个目录), 不太会有交集, 第二种更适合. |
17
ElmerZhang 2022-10-21 14:18:18 +08:00
项目本身就是个微服务的话,第一种更合适
|
18
wencan 2022-10-21 15:14:51 +08:00
我都是采取三层模型:
服务层 /控制层: http service 、rpc service 、mq 消费者 业务逻辑实现层 数据访问层 /客户端层: http 调用、mysql 、redis 、mq 生产者等 另外,把一些不带业务逻辑的 struct 单独作为数据模型层,贯穿三层,算是挂了 https://github.com/wencan 欢迎交流 |