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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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

 

以上是关于[golang]反射的用处--代码自动生成的主要内容,如果未能解决你的问题,请参考以下文章

golang goroutine例子[golang并发代码片段]

golang代码片段(摘抄)

[goa]golang微服务框架学习-- 代码自动生成

GoLang - 有没有办法分析使用反射的代码的内存使用情况?

Unity记录一个动态生成代码方法

java 反射代码片段