Golang web开发目录结构说明

全栈运维 · · 3134 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

本篇文章介绍的是自己在实际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</pre>

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开发目录结构说明

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3134 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传