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 關注
- 235 瀏覽
添加回答
舉報