Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Anda Boleh Mencapai Pengaturcaraan Generik dengan Fungsi Variadik dalam Go?

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

Barbara Streisand
Barbara Streisandasal
2024-10-26 12:21:29856semak imbas

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>

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>

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>

atau

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

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!

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