1. 首页
  2. GoLang

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

一个自用的Go项目目录结构,分为两个部分,第一部分为框架,作为一个单独的项目,其它项目可直接通过import引入该项目,第二部分为不同的项目的目录

抽离框架目录

core {
  frame {
    api(响应规范)
    cache(缓存)
    cmd(命令行,可调用代码生成)
    config(配置结构体)
    constant(常量)
    db(数据库链接)
    entity(公共实体)
    errortool(错误工具)
    gen(负责代码生成,如生成错误代码文件,生成的错误代码可鼠标悬浮看到注释)
    log(日志)
    middleware(中间件)
    mq(消息队列)
    secure(安全工具类,获取当前登录用户,部门,IP等信息)
    validate(字段输入验证)
    initializer.go (初始化项目,后续看情况抽离为一个目录)
  }
  init
  lib {
    mail(邮件发送)
    verify(验证码工具类)
  }
  util(工具类) {
    array.go
    collection.go
    date.go
    file.go
    id.go
    ip.go
    jwt.go
    math.go
    number.go
    slice.go
    sql.go
    tree.go
  }
}

实际项目目录

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

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

TOP