首頁 >後端開發 >Golang >如何優雅地處理 Go 的 JSON 編組中的多個錯誤?

如何優雅地處理 Go 的 JSON 編組中的多個錯誤?

DDD
DDD原創
2024-12-01 21:22:11741瀏覽

How Can I Eleganly Handle Multiple Errors in Go's JSON Marshaling?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn