[golang]反射的用处--代码自动生成

背景:

go语言处理db、json的时候,具体代码的变量定义和db字段、json输出的时候可能不一样。

这个时候,我们需要用tag的方式来进行定义。

例如:

type MyStruct struct {
     Name      string `json:"name"`
     MaxHeight int    `json:"max_height"`
}

如果字段或结构体非常多的话,有十几二十几个,就非常的麻烦。

因此,就利用golang的反射,做了一个小工具来自动生成,具体使用如下:

//你的结构体定义
type MyStruct struct {
     Name      string
     MaxHeight int
}

var s MyStruct
//为结构体中的变量,生成json的tag
//把单词用下划线连接(通过大写字母来区分)
fmt.Prinln( tool.ProduceStructTag(s, "json"))

这样就会得到最上面带tag的代码。

这个工具可以进一步改进,根据自生的框架做通用的代码生成。定义好结构体和接口,然后 duang 的一下生成代码,只需要写业务逻辑了。

具体实现参考:https://github.com/AsGz/tools/blob/master/produce_struct_tag.go

时间: 2024-11-05 21:49:07

[golang]反射的用处--代码自动生成的相关文章

如何根据动态SQL代码自动生成DTO

当前的状况 一般做数据库相关开发, 除非学习, 否则很少有人愿意直接使用JDBC.本来Java代码就比较啰嗦了,而直接用JDBC写代码之啰嗦简直有些令人发狂!所以在实际开发过程中,我们通常都会使用一些框架/库来帮助我们操作数据库.而且开源市场上的选择也比较多,就我个人接触到的有:Hibernate,MyBatis,JdbcTemplate,DbUtils,ActiveRecord,JavaLite等等. 这些框架都能大幅的提高开发效率,对于一些基本CRUD操作来说,虽然各有差异,但总的来说基本是

MyBatis代码自动生成

MyBatis的代码自动生成的功能,由于MyBatis属于一种半自动的ORM框架,所以主要的工作就是配置Mapping映射文件,但是由于手写映射文件很容易出错,所以可利用MyBatis生成器自动生成实体类.DAO接口和Mapping映射文件.这样可以省去很多的功夫,将生成的代码copy到项目工程中即可. 使用自动生成有很多方式,可以在eclipse中安装插件,但是以下将要介绍的这种方式我认为很轻松,最简单,不需要装插件,只需要下几个jar包即可,把它们放在一个目录下面. 生成代码需要的文件和ja

mybatis-generator 代码自动生成插件

Hibernate 可以选择MyEclipse Datebase Explorer 或者是 Hibernate-tools 等工具来自动生成映射文件和实体类. mybatis 当然也要有!下面简单介绍一个代码自动生成插件:mybatis-generator. mybatis-generator有三种用法:命令行.eclipse插件.maven插件. 作为一个使用idea开发的程序猿来说势必选择maven插件了.其他两种方式就不再此介绍了,因为我没有用过啊--- 仅仅需要简单的三步就可以啦,就是这

STM32代码自动生成工具使用说明

1.什么是"代码自动生成工具" 为了降低开发者的开发门槛,缩短开发周期,降低开发资源投入,机智云推出了代码自动生成服务.云端会根据产品定义的数据点生成对应产品的设备端代码. 自动生成的代码实现了机智云通信协议的解析与封包.传感器数据与通信数据的转换逻辑,并封装成了简单的API,且提供了多种平台的实例代码.当设备收到云端或APP端的数据后,程序会将数据转换成对应的事件并通知到应用层,开发者只需要在对应的事件处理逻辑中添加传感器的控制函数,就可以完成产品的开发. 使用自动生成的代码开发产品

mybatisGenerator 代码自动生成报错 Result Maps collection already contains value for BaseResultMap

由于mybatis简单易学,比起Hibername来,更容易上手,代码也能自动生成.这几天研究了下代码自动生成的,参考: http://0609xiaohua.iteye.com/blog/1453570 但是把代码复制进来,运行了下,却跑不起来,报以下错误: Exception in thread "main" java.lang.ExceptionInInitializerError at com.test.Test.main(Test.java:12)Caused by: org

Mybatis最入门---代码自动生成(generatorConfig.xml配置)

第一种方式:通过Main方法执行配置文件. ------------------------------------------------------------------------------------------------------------------------------------- 1.创建本文我们将使用的工程Mybatis13,工程结构图如下:[重点文件我们给出,其他配置文件请读者参考前文工程] 2.修改jdbc.properties文件,具体内容如下: jdbc.

代码自动生成工具,2小时搞定智能硬件产品Demo

常见的智能硬件设备多是由单片机.微处理器.微控制器等构成的嵌入式系统,通过WIFI.蓝牙.GPRS等无线通信技术连接云服务器,传统的开发方式需要开发人员根据自己的产品功能完成MCU 通过无线通信/芯片模组与云服务器交互的协议,而通过MCU代码自动生成工具,云端会根据产品定义的数据点生成对应产品的设备端代码.使用自动生成的代码开发产品,就不必再处理协议相关的部分,开发者可以将节省出来的精力集中在产品的核心功能开发上,不必重复"造轮子". 使用MCU.手机APP代码自动生成工具,2小时搞定

iBatis 代码自动生成工具 iBator 及 Example 使用

iBator的下载和安装 官方下载地址:http://people.apache.org/builds/ibatis/ibator/ 安装:见<Eclipse 插件安装> 安装完成后,“File” —> "New" —> "Other..." iBatis 代码自动生成工具 iBator - 低调的华丽 - 辉色空间 选择项目名 —> "New" —> "Other..." —> “N

MyBatise代码自动生成时候Oralce的number类型BigDecimal问题

第一次使用MyBatise发现一个问题,使用MyBatise的代码自动生成工具时候,即便在配置文件中定义了 Xml代码   <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <javaTypeResolver> <property name="forceBigDecimals