为什么有这篇文章
你是不是有过这种烦恼? 自己写的配置yaml文件要把配置信息弄到go的结构体里, 需要我们一个一个把go的结构体代码敲出来, 过程很繁琐, 很影响开发的效率和开发的热情.
现在我将介绍如何编写一个将yaml文件转成go结构体的脚本,这样能很方便地生成go结构, 提升开发效率
实操代码
实现一个yaml类, 方便我们后续调用以及操作,
struct字段存储每个生成好的结构体
type Yaml struct {
Struct []string
}
func NewYaml() *Yaml {
return &Yaml{
}
}
GetStruct函数
用户调用yaml对象的GetStruct方法, 它将读取文件路径下的yaml文件, 并将其转换成map[string]interface{}类型, 递归调用generateStructCode, 层级生成每一个结构体, 最后在将其写入文件
GetStruct 读取 YAML 文件并生成相应的 Go 结构体
func (y *Yaml) GetStruct(filepath string) (err error) {
data, err := os.ReadFile(filepath)
if err != nil {
return
}
var temp map[string]interface{
}
err = yaml.Unmarshal(data, &temp)
if err != nil {
return
}
// 生成结构体
y.Struct = append(y.Struct, y.generateStructCode("config", temp))
create, err := os.Create(