Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menangani Berbilang Ralat secara Elegan dalam JSON Marshaling Go?

Bagaimanakah Saya Boleh Menangani Berbilang Ralat secara Elegan dalam JSON Marshaling Go?

DDD
DDDasal
2024-12-01 21:22:11675semak imbas

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

Pengendalian Ralat Dijadikan Elegan dalam Go

Dalam Go, mungkin mencabar untuk mengendalikan berbilang ralat dengan cekap. Pertimbangkan kod berikut:

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
} 

Kod ini menampilkan semakan ralat yang meluas, tetapi pendekatan pengendaliannya sukar digunakan. Adakah terdapat cara yang lebih elegan untuk mengurus ralat ini?

Nasib baik, ada. Dengan memanfaatkan kuasa penutupan dan pembolehubah ralat dikongsi, kami boleh mencapai pengendalian ralat ringkas:

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

Dalam kod yang dikemas kini ini, kami mentakrifkan penutupan f yang mengendalikan penyemakan ralat dan penyemakan ralat JSON untuk sumber tertentu dan destinasi. Dengan menggunakan operator && untuk merantai panggilan ini, kami boleh melaksanakannya secara berturut-turut dan ralat pertama yang dihadapi akan ditangkap dalam pembolehubah ralat yang dikongsi. Ini membolehkan kami mengendalikan semua ralat sekaligus, meningkatkan kebolehbacaan dan kebolehselenggaraan kod dengan ketara.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menangani Berbilang Ralat secara Elegan dalam JSON Marshaling Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn