从其他语言转 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 日
看领导, 只有统一就好了。
|
2
kongkongyzt 2022 年 10 月 21 日
除了向外暴露的 api 接口在根目录下有一个叫 api 的目录,其他的代码都收到 internal 目录中
|
3
E2gCaBAT5I87sw1M 2022 年 10 月 21 日
两种结构都可以,第二种更加边界更加内聚一些,方便改为微服务或者 Serverless
|
4
Asakijz 2022 年 10 月 21 日
|
5
wakarimasen 2022 年 10 月 21 日 via Android
我用第二种架构碰到过循环引用的问题。(不代表它不好只是我比较菜)
|
6
dqzcwxb 2022 年 10 月 21 日 面向对象设计,增加项目可读性降低开发和维护成本
面向过程开发,会导致重复劳动但是方便团队分工从而提升整体效率 |
7
dudubaba 2022 年 10 月 21 日
个人偏向第二种,移出模块只需要按目录就行了,不用每个文件夹里找。
|
9
mantis 2022 年 10 月 21 日
@kongkongyzt 同意
|
10
SimbaPeng 2022 年 10 月 21 日
|
11
slert 2022 年 10 月 21 日
这和语言关系不大吧 看个人喜好
|
12
matrix1010 2022 年 10 月 21 日 via iPhone
建议参考 grafana
|
13
sophos 2022 年 10 月 21 日
|
14
wildlife 2022 年 10 月 21 日
|
15
RedBeanIce 2022 年 10 月 21 日
第二种
|
16
zhuweiyou 2022 年 10 月 21 日
看具体情况吧.
我们基本是一个大项目下面,各自负责自己的模块(比如加一个活动就新增一个目录), 不太会有交集, 第二种更适合. |
17
ElmerZhang 2022 年 10 月 21 日
项目本身就是个微服务的话,第一种更合适
|
18
wencan 2022 年 10 月 21 日
我都是采取三层模型:
服务层 /控制层: http service 、rpc service 、mq 消费者 业务逻辑实现层 数据访问层 /客户端层: http 调用、mysql 、redis 、mq 生产者等 另外,把一些不带业务逻辑的 struct 单独作为数据模型层,贯穿三层,算是挂了 https://github.com/wencan 欢迎交流 |