3 回答

TA貢獻1871條經驗 獲得超8個贊
您可以使用 mapstructure 解碼器掛鉤,在解碼器掛鉤內編寫自定義邏輯來完成您的工作。但是沒有標準的 lib 函數來完成你的工作。
例子:
dc := &mapstructure.DecoderConfig{Result: target, DecodeHook: customHook}
ms, err := mapstructure.NewDecoder(dc)
if err != nil {
return err
}
err = ms.Decode(source)
if err != nil {
return err
}
func customHook(f reflect.Type, t reflect.Type, data interface{}) (interface{}, error) {
if f.Kind() == reflect.Int && t.Kind() == reflect.Bool {
var result bool
if data == 1 {
result = true
}
return result, nil
}
因此,只要它具有您的自定義邏輯,您就可以使用自定義掛鉤從技術上將任何內容解碼為任何內容。

TA貢獻1797條經驗 獲得超6個贊
使用嵌套的 for 循環:
for _, c := range source {
oc := OldCategory{OldA: c.A}
for _, sc := range c.SubCategory {
oc.OldSubCategory = append(oc.OldSubCategory, OldSubCategory{OldB: sc.B, OldC: sc.C})
}
target = append(target, oc)
}
- 3 回答
- 0 關注
- 153 瀏覽
添加回答
舉報