Go 中的錯誤處理變得優雅
在 Go 中,高效處理多個錯誤可能具有挑戰性。考慮以下程式碼:
aJson, err1 := json.Marshal(a) bJson, err2 := json.Marshal(b) cJson, err3 := json.Marshal(c) dJson, err4 := json.Marshal(d) eJson, err5 := json.Marshal(e) fJson, err6 := json.Marshal(f) gJson, err4 := json.Marshal(g) if err1 != nil { return err1 } else if err2 != nil { return err2 } else if err3 != nil { return err3 } else if err4 != nil { return err4 } else if err5 != nil { return err5 } else if err5 != nil { return err5 } else if err6 != nil { return err6 }
此程式碼具有廣泛的錯誤檢查功能,但其處理方法很笨拙。有沒有更優雅的方法來管理這些錯誤?
幸運的是,有。透過利用閉包和共享錯誤變數的強大功能,我們可以實現簡潔的錯誤處理:
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
在這個更新的程式碼中,我們定義了一個閉包f 來處理給定來源的JSON編組和錯誤檢查和目的地。透過使用 && 運算子連結這些調用,我們可以連續執行它們,並且遇到的第一個錯誤將被捕獲在共享 err 變數中。這使我們能夠一次處理所有錯誤,顯著提高程式碼的可讀性和可維護性。
以上是如何優雅地處理 Go 的 JSON 編組中的多個錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!