Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menangani Berbilang Ralat secara Elegan dalam JSON Marshaling Go?
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!