Dalam Go, pengendalian ralat ialah amalan penting. Walau bagaimanapun, pengendalian berbilang ralat boleh membawa kepada kod verbose, kerana setiap ralat memerlukan pemeriksaan dan pengendalian yang jelas. Artikel ini mengkaji contoh rekaan untuk menyalurkan teks ke dalam cat dan menangani isu mengurus berbilang ralat dengan cekap.
Contoh yang disediakan melibatkan penggunaan exec.Command to pipe data into kucing dan baca output. Setiap baris dalam kod asal mengandungi tiga baris tambahan khusus untuk pengendalian ralat, menghasilkan sejumlah besar kod pengendalian ralat.
Kami berusaha untuk menangani ralat secara bertanggungjawab tanpa menjejaskan kebolehbacaan kod . Berikut ialah penyelesaian idiomatik:
package main import ( "fmt" "io" "io/ioutil" "os" "os/exec" ) func piping(input string) (string, error) { cmd := exec.Command("cat", "-") stdin, err := cmd.StdinPipe() if err != nil { return "", err } stdout, err := cmd.StdoutPipe() if err != nil { return "", err } err = cmd.Start() if err != nil { return "", err } _, err = io.WriteString(stdin, input) if err != nil { return "", err } err = stdin.Close() if err != nil { return "", err } all, err := ioutil.ReadAll(stdout) output := string(all) if err != nil { return output, err } return output, nil } func main() { in := "Hello world!" fmt.Println(in) out, err := piping(in) if err != nil { fmt.Println(err) os.Exit(1) } fmt.Println(out) }
Kod pemfaktoran semula ini menggunakan pengendalian ralat dengan cara yang lebih ringkas:
Dengan menggunakan pendekatan ini, kami mengendalikan berbilang ralat dengan berkesan tanpa pertindihan kod yang tidak perlu. Teknik ini menggalakkan kebolehbacaan kod dan mengurangkan boilerplate sambil memastikan pengendalian ralat yang betul.
Atas ialah kandungan terperinci Bagaimanakah Pengaturcara Go Boleh Mengurus Berbilang Ralat Serentak Dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!