Golang web开发目录结构说明

本篇文章介绍的是自己在实际go项目开发中使用的目录结构说明,如有更好的组织形式可以入群950828714或者关注微信公众号 ”行者说“ 交流

目录结构说明

Gin Web项目开发都是按照如下所示目录组织

goproj_org
├── todo.go    # main 入口
├── go.mod
├── go.sum
├── config    # 配置文件存放
│   └── config.yaml
├── controller  # api 接口逻辑,http handler
│   ├── DemoController.go
│   └── TodoController.go
├── model      # model定义
│   └── Todo.go
├── router    # 路由入口
│   ├── middleware  # gin框架 自定义中间件,中间件一般用于路由中,故放到这里
│   │   └── jwt.go
│   └── router.go
├── service 
│   ├── ConfigService.go
│   ├── DBService.go
│   └── TodoService.go
└── util      # 公共函数部分,比如加密,时间处理等
 └── encrypt.go

1、config 目录 是存放配置文件,一般是程序主配置文件和,日志配置文件
2、model 目录 是实体模型定义,一般是一个实体一个文件,比如 Todo.go
3、service 目录 是实体和数据库处理逻辑存放,比如新增一个实体;

另外也把数据库链接和配置文件处理等放到了service下;在有些情况下可以:
  独立`database目录` 存放数据库连接的逻辑
  独立`system 目录`存放配置文件加载和读取逻辑

4、controller目录,有时候也叫 handler目录,是实际HTTP请求的api接口处理,对应到Gin框架中就是handler函数
5、router 目录是定义路由的地方
6、middleware 目录存在router下,实现自定义的中间件逻辑,Gin框架中间件一般用于路由中
7、util 目录是定义公共函数、工具的地方
8、这里的第一层级的todo.go 有时候也会命名成main.go 就是整个程序的入口

Golang的 可见性规则

上一篇文章 基于Gin的golang web开发增删改查实战(TodoList) 中所有的逻辑都在单个文件中实现,因为Todo项目本身就很简单,所有单个文件存放还不至于太混乱。但是一旦把不同的逻辑拆分到不同的目录之后,需要注意Golang的 可见性规则

什么是Golang的 可见性规则?

Go语言中没有像其它语言一样有public、protected、private等访问控制修饰符。如果想要实现这样的访问控制是怎么做的呢,golang通过字母大小写来控制可见性的。

在定义常量、变量、类型、接口、结构、函数等的名称是大写字母开头表示能被其它包访问或调用(相当于public),非大写开头就只能在包内使用(相当于private,变量或常量也可以下划线开头)


附加:

本次demo实战详细代码请参考 https://gitee.com/colin5063/go-learn/tree/master/20201225-projorg

你可能感兴趣的:(Golang web开发目录结构说明)