美文网首页Golang
Golang web开发目录结构说明

Golang web开发目录结构说明

作者: 菩提老鹰 | 来源:发表于2020-12-25 15:07 被阅读0次

    本篇文章介绍的是自己在实际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开发目录结构说明

        本文链接:https://www.haomeiwen.com/subject/tbtinktx.html