1. 首页
  2. GoLang

一个自用的Go项目目录结构

一个自用的基于Gin框架的Go项目目录结构,分为两个部分:

第一部分为框架共用部分(koi锦鲤),作为一个单独的项目,其它项目可直接通过import引入该项目

第二部分为不同的项目的目录

公共框架目录

api(定义接口响应体规范)
cache(缓存,实现如redis等)
cmd(命令行,可调用代码生成)
config(默认的配置结构体,及加载配置相关)
constant(常量)
db(数据库链接,如mysql等)
errtool(错误工具)
gen(负责代码生成,如生成错误代码文件,生成的错误代码可鼠标悬浮看到注释)
lib(常用类库) {
  mail(邮件发送)
  verify(验证码工具类)
}
logger(日志)
middleware(中间件)
mq(消息队列)
secure(安全工具类,获取当前登录用户,部门,生成与解析JWT,IP等信息)
tpl(模板文件)
util(工具类) {
  aes.go
  byte.go
  ...
}
validate(验证器,字段输入验证)

实际项目目录

cmd {
  server {
    wire {
      wire.go
      wire_gen.go
    }
    load.go 配置加载,如 redis 连接等
    main.go
  }
  task {
  }
}
config {
  config.yaml(不包含到代码里,部署打包的时候自动添加到目录下)
  config.example.yaml(配置样本文件)
}
internal {
  controller {
    admin
    index
  }
  entity(实体) {
    domain(对应数据库字段)
    dto(接收请求体)
    vo(Api接口返回视图)
  }
  global(错误代码,全局变量等) {
    constant(常量)
    err(错误代码,通过命令自动生成该文件,实际是拉取数据库配置生成)
    exception(抛出异常工具)
  }
  middleware(项目中间件){
    interceptor(拦截器)
  }
  repo(操作数据库){
  }
  route(路由定义) {
    admin
    index
  }
  service(具体逻辑) {
  }
  task(定时任务){
  }
  util(项目工具类) {
  }
  websocket {
  }
}
pkg(外部包) {

}
website(网站资源目录) {
  icon
  static
  template
}

TOP