# Golang 运行时动态结构体 主要提供在运行时动态生成结构体的能力, 同时支持合并多个已有结构体,生成一个新的结构体 主要功能如下: * 运行时动态生成结构体, 更灵活 * 运行时继承已有结构体的结构 * 运行时合并多个结构体 * 向结构体中新增字段 * 移除结构体中指定字段 * 修改已存在字段的类型以及Tag标签 * 读取动态结构体字段的Helper * 动态结构体的值, 解析到一个已定义的结构体中 * 懂动态结构体生成slice或者map实例 ## 使用示例 ```go package main import ( "encoding/json" "fmt" "log" "git.zhangdeman.cn/zhangdeman/dynamic-struct" ) func main() { instance := NewStruct(). AddField("Integer", "", 0, `json:"int"`, false). AddField("Text", "", "", `json:"someText"`, false). AddField("Float", "", 0.0, `json:"double"`, false). AddField("Boolean", "", false, "", false). AddField("Slice", "", []int{}, "", false). AddField("Anonymous", "", "", `json:"-"`, false). Build(). New() data := []byte(` { "int": 123, "someText": "example", "double": 123.45, "Boolean": true, "Slice": [1, 2, 3], "Anonymous": "avoid to read" } `) err := json.Unmarshal(data, &instance) if err != nil { log.Fatal(err) } data, err = json.Marshal(instance) if err != nil { log.Fatal(err) } fmt.Println(string(data)) // Out: // {"int":123,"someText":"example","double":123.45,"Boolean":true,"Slice":[1,2,3]} } ```