func main() {
type Config struct {
Addr string
Port int
}
type ColorGroup struct {
ID int `db:"id"`
Name string `db:"name"`
Colors []string `db:"colors"`
Config `db:"config"`
}
group := ColorGroup{
ID: 0,
Name: "222",
Colors: []string{"33", "34", "35", "36", "37", "38", "39", "40"},
Config: Config{
Addr: "127.0.0.1",
Port: 0,
},
}
//struct转map
decoder := struct2.Decoder{
TagName: "db", //tag
//将匿名嵌套结构的字段提到父结构中,encoding/json也是这么处理的 ,
//squash控制不了decoder.Map函数,针对当前示例 Map后Config总是独立字段
//只能控制 decoder.Decode函数
Squash: true,
}
result := decoder.Map(group)
fmt.Println(result)
group2 := ColorGroup{}
if err := decoder.Decode(result, &group2); err != nil {
panic(err)
}
fmt.Println(group2)
}