一个自用的基于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
}