我们编写的 如果是Go 程序都是简单程序,一般由一个或几个 Go 源码文件组成,而且所有源码文件都在同一个目录中。但是生产环境中运行的实用程序可不会这么简单,通常它们都有着复杂的项目结构布局。弄清楚一个实用 Go 项目的项目布局标准是 Go 开发者走向编写复杂 Go 程序的第一步,也是必经的一步。
但 Go 官方到目前为止也没有给出一个关于 Go 项目布局标准的正式定义。下面我们就说说一般项目中如何布局工程目录结构。下图是一个go Web管理后端项目
我来解释一下各目录作用:
cmd目录:一般go项目会把main.go文件放在该目录下,cmd下会创建一个目录,这个目录的作用是在go build的时候生成执行文件名称
cmd
└── admin
└── main.go
etc: 存放工程配置文件
doc: 放一些工程文档
script:该目录可以放shell脚本或者工程的makefile文件
server: 工程业务逻辑代码全部存放在该目录下
sql: 存放工程的sql文件,如果是工程比较大尤其是微服务化,也会把sql文件单独放在一个仓库,这样方便跟踪整个sql对库表的改动。
tools: 工程里的一些工具代码放到该目录下
工程里一些重要的文件:
changelog: 每当版本发布前,需要把: 配置变更,数据库变更,功能变更记录在该文件
Dockefile: 镜像打包文件
Makefile : make编译一般C++开发同学可能用的比较多,其实对于大型工程,尤其是工程需要加入cicd来完成自动化构建和发布,可以把这些功能放到makefile里完成。
当然对go工程项目不同,大小不同布局也可能是有所不同的,这个可以根据实际需求来定,下面是一个go标准布局参考 :https://github.com/golang-standards/project-layout
更多知识可来:https://wx.zsxq.com/dweb2/index/group/28885848155511