3 回答
TA贡献1818条经验 获得超11个赞
var err error
f := func(dest *D, src S) bool {
*dest, err = json.Marshal(src)
return err == nil
} // EDIT: removed ()
f(&aJson, a) &&
f(&bJson, b) &&
f(&cJson, c) &&
f(&dJson, d) &&
f(&eJson, e) &&
f(&fJson, f) &&
f(&gJson, g)
return err
TA贡献1829条经验 获得超13个赞
将结果放在切片中而不是变量中,将初始值放在另一个切片中进行迭代,如果出现错误则在迭代过程中返回。
var result [][]byte
for _, item := range []interface{}{a, b, c, d, e, f, g} {
res, err := json.Marshal(item)
if err != nil {
return err
}
result = append(result, res)
}
你甚至可以重用一个数组而不是两个切片。
var values, err = [...]interface{}{a, b, c, d, e, f, g}, error(nil)
for i, item := range values {
if values[i], err = json.Marshal(item); err != nil {
return err
}
}
当然,这需要类型断言才能使用结果。
- 3 回答
- 0 关注
- 203 浏览
添加回答
举报