Bagaimanakah Anda Boleh Mencapai Pengaturcaraan Generik dengan Fungsi Variadik dalam Go?

Barbara Streisand
Lepaskan: 2024-10-26 12:21:29
asal
795 orang telah melayarinya

How Can You Achieve Generic Programming with Variadic Functions in Go?

Pengaturcaraan Generik dengan Fungsi Variadik dalam Go

Walaupun Go kekurangan templat atau lebihan fungsi, mencapai beberapa tahap pengaturcaraan generik untuk fungsi variadik adalah mungkin.

Pertimbangkan coretan kod berlebihan berikut:

<code class="go">func (this Document) GetString(name string, defaults ...string) string {
    v, ok := this.GetValueFromDb(name)
    if !ok {
        if len(defaults) >= 1 {
            return defaults[0]
        } else {
            return ""
        }
    }
    return v.asString
}

func (this Document) GetInt(name string, defaults ...int) int {
    v, ok := this.GetValueFromDb(name)
    if !ok {
        if len(defaults) >= 1 {
            return defaults[0]
        } else {
            return 0
        }
    }
    return v.asInt
}</code>
Salin selepas log masuk

Untuk menghapuskan lebihan ini, kita boleh menggunakan jenis antara muka{}:

<code class="go">func (this Document) Get(name string, defaults ...interface{}) interface{} {
    v, ok := this.GetValueFromDb(name)
    if !ok {
        if len(defaults) >= 1 {
            return defaults[0]
        } else {
            return nil
        }
    }
    return v
}</code>
Salin selepas log masuk

Fungsi umum ini kemudiannya boleh digunakan dengan jenis penegasan dalam kod pelanggan:

<code class="go">value := document.Get("index", 1).(int)  // Panics if the value is not an int</code>
Salin selepas log masuk

atau

<code class="go">value, ok := document.Get("index", 1).(int)  // `ok` is false if the value is not an int</code>
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini memperkenalkan overhed masa jalan. Ia mungkin lebih cekap dalam sesetengah kes untuk mengekalkan fungsi yang berasingan dan mempertimbangkan untuk menstruktur semula kod.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Mencapai Pengaturcaraan Generik dengan Fungsi Variadik dalam Go?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!