Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Melaksanakan Pengendalian Ralat Generik dalam Go Without Generics?

Bagaimana untuk Melaksanakan Pengendalian Ralat Generik dalam Go Without Generics?

Susan Sarandon
Lepaskan: 2024-11-04 12:48:01
asal
348 orang telah melayarinya

How to Implement Generic Error Handling in Go Without Generics?

Melaksanakan Pengendalian Ralat Generik dalam Go

Ketiadaan keupayaan generik Go menimbulkan cabaran apabila cuba menyamaratakan fungsi. Senario biasa ialah keperluan untuk fungsi pengendalian ralat generik yang digunakan untuk mana-mana fungsi yang mengembalikan nilai dan ralat.

Contoh yang disediakan menunjukkan percubaan untuk mencipta fungsi sedemikian menggunakan antara muka kosong:

<code class="go">func P(any interface{}, err error) (interface{}) {
    if err != nil {
        panic("error: "+ err.Error())
    }
    return any
}</code>
Salin selepas log masuk

Sementara pendekatan ini berfungsi untuk pengendalian ralat, ia kehilangan maklumat jenis, meninggalkan antara muka yang terhasil kosong.

Menjana Fungsi Pengendalian Ralat Khusus Jenis

Untuk mengelakkan isu kehilangan maklumat jenis, pertimbangkan untuk menggunakan penjanaan kod untuk mencipta pelaksanaan khusus fungsi pengendalian ralat untuk jenis yang berbeza. Ini boleh dicapai menggunakan alatan seperti "go generate", "gengen", "genny" atau "gen".

Sebagai contoh, menggunakan "gen", anda boleh menentukan templat:

<code class="text">// template.go

package main

import "fmt"

func P[T any](v T, err error) (T) {
    if err != nil {
        panic(fmt.Sprintf("error: %v", err))
    }
    return v
}</code>
Salin selepas log masuk

Templat ini boleh digunakan untuk menjana pelaksanaan jenis khusus bagi P():

<code class="sh">gen generate</code>
Salin selepas log masuk

Ini akan mewujudkan pelaksanaan seperti sebagai:

<code class="go">// p_int.go

package main

func PInt(v int, err error) (int) {
    if err != nil {
        panic(fmt.Sprintf("error: %v", err))
    }
    return v
}</code>
Salin selepas log masuk

Dengan menggunakan fungsi yang dijana ini, maklumat jenis dikekalkan dan pengendalian ralat boleh digunakan pada jenis tertentu dengan lancar.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pengendalian Ralat Generik dalam Go Without Generics?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan