自己实现一个好用的代码生成器

  • go
  • 代码生成
大约 2 分钟

自己实现一个好用的代码生成器

项目地址:https://github.com/Echoidf/gocode_generateopen in new window

项目介绍

代码生成器,用于快速生成代码,支持MySQL数据库,使用Golang原生的template进行渲染

最近尝试使用了一下各种golang的orm框架,比如xorm、gorm、gozero、zorm等,这些框架基本上都会有代码生成的工具,用以适配自己的框架,但是有时候我并不想生成这么繁琐的格式,这对于追求代码简洁之道的开发者来说简直是不忍直视。

灵机一动,不如自己亲自做一个代码生成器,我想怎么生成就怎么生成。说干就干,我开始查阅代码生成器的生成原理,其实很简单,以本项目为例,目前只支持了MySQL数据库,执行流程如下:

  • 首先连接数据源
  • 获取数据库表信息
  • 获取表字段信息
  • 使用go template渲染模板文件生成代码

go template的语法非常简单,基本上就是if、range、with等关键字,再加上一些内置函数,基本上可以满足大部分的需求。

参考文档:https://cloud.tencent.com/developer/article/1683688open in new window

其中我总结比较重要的几点是:

  1. 我们可以自定义函数作为模板的变量,这样我们就可以在模板中使用自定义的函数了

  2. 模板中的变量,我们可以在模板中使用{{.}}来获取,这样我们就可以在模板中使用传入的变量了

  3. 这个小项目整体上比较简单,我们可以通过覆写模板文件如default.tmpl来生成我们想要的代码,还可以自定义其他的模板文件来进行扩展,目前支持了xorm框架

上次编辑于: