Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan penegasan dalam Go?

Bagaimana untuk menggunakan penegasan dalam Go?

王林
王林asal
2023-05-11 17:06:122120semak imbas

Dalam bahasa Go, penegasan merujuk kepada menyemak sama ada syarat tertentu adalah benar semasa program dijalankan dan membuang pengecualian jika tidak. Penegasan sangat berguna apabila menyahpepijat program dan kod, membantu pembangun mengenal pasti masalah dengan cepat. Artikel ini akan memperkenalkan cara menggunakan penegasan dalam bahasa Go.

1. Bahasa Go tidak menyokong penegasan eksplisit

Bahasa Go itu sendiri tidak menyokong sintaks penegasan eksplisit seperti Java atau Python. Dalam Java atau Python, pembangun boleh menggunakan kata kunci assert untuk menyemak syarat tertentu dalam program. Tetapi dalam bahasa Go, kita perlu menulis kod sendiri secara manual untuk melaksanakan fungsi penegasan.

2. Gunakan panik dan pulihkan

Dalam bahasa Go, kita boleh menggunakan fungsi panik dan pulih untuk melaksanakan fungsi yang serupa dengan penegasan. Apabila syarat tertentu tidak dipenuhi, kami boleh menamatkan program melalui fungsi panik dan menghantar maklumat ralat kepada fungsi pulih dalam rantai panggilan. Berikut ialah contoh kod menggunakan fungsi panik dan pulih:

func divide(a, b int) int {
    if b == 0 {
        panic("division by zero")
    }
    return a / b
}

func test() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("recovered from ", r)
        }
    }()
    divide(10, 0)
    fmt.Println("this line will never be executed")
}

func main() {
    test()
    fmt.Println("program continues")
}

Dalam kod di atas, kami mentakrifkan fungsi bahagi untuk mensimulasikan ralat bahagi dengan 0. Apabila melaksanakan fungsi bahagi, jika b ialah 0, fungsi panik akan dilaksanakan dan rentetan akan dihantar sebagai mesej ralat. Apabila fungsi bahagi dipanggil dalam fungsi ujian, panik dicetuskan kerana nilai b ialah 0. Program akan segera berhenti berjalan dan melaksanakan blok pernyataan tangguh dalam fungsi ujian. Fungsi pulih dipanggil dalam blok pernyataan ini untuk menangkap panik sebelumnya dan mencetak mesej ralat. Akhirnya, program akan terus melaksanakan penyata dalam fungsi utama.

3. Gunakan jenis ralat tersuai

Selain menggunakan fungsi panik dan pulih, kami juga boleh menggunakan jenis ralat tersuai untuk melaksanakan fungsi penegasan. Kita boleh mentakrifkan jenis ralat baharu untuk mewakili ralat di bawah keadaan tertentu dan menggunakan jenis ralat ini dalam atur cara untuk menyemak sama ada keadaan itu benar. Berikut ialah kod sampel menggunakan jenis ralat tersuai:

type DivisionByZeroError struct{}

func (e DivisionByZeroError) Error() string {
    return "division by zero"
}

func divide(a, b int) (int, error) {
    if b == 0 {
        return 0, DivisionByZeroError{}
    }
    return a / b, nil
}

func main() {
    res, err := divide(10, 0)
    if err != nil {
        if _, ok := err.(DivisionByZeroError); ok {
            fmt.Println("division by zero")
        } else {
            fmt.Println("unknown error")
        }
        return
    }
    fmt.Println(res)
}

Dalam kod di atas, kami mentakrifkan jenis ralat baharu DivisionByZeroError dan melaksanakan kaedah Ralat untuk mengembalikan maklumat ralat. Dalam fungsi bahagi, jenis ralat ini dikembalikan apabila nilai b ialah 0. Apabila memanggil fungsi bahagi dalam fungsi utama, kami menggunakan berbilang tugasan untuk mendapatkan nilai pulangan dan maklumat ralat. Jika ralat bukan nol, ini bermakna terdapat beberapa jenis ralat dalam atur cara Kami menggunakan penegasan jenis untuk menentukan jenis ralat tertentu dan melaksanakan operasi yang berbeza berdasarkan jenis ralat yang berbeza.

4. Ringkasan

Bahasa Go itu sendiri tidak menyokong sintaks penegasan eksplisit, tetapi kami boleh mencapai fungsi seperti penegasan dengan menggunakan fungsi panik dan memulihkan atau jenis ralat tersuai. Apabila menggunakan kaedah ini untuk menyemak ralat masa jalan program, anda juga perlu mengendalikan pengecualian dengan berhati-hati untuk memastikan kestabilan dan kebolehpercayaan program.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan penegasan dalam 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