Bagaimanakah Anda Boleh Mencapai Pengaturcaraan Generik untuk Fungsi Variadik dalam Go Tanpa Templat atau Fungsi Terlebih Beban?

Patricia Arquette
Lepaskan: 2024-10-27 01:56:03
asal
748 orang telah melayarinya

How Can You Achieve Generic Programming for Variadic Functions in Go Without Templates or Overloaded Functions?

Argumen Variadik Generik dalam Go

Walaupun Go kekurangan templat dan fungsi terlebih muatan, mencapai beberapa bentuk pengaturcaraan generik untuk fungsi variadik adalah mungkin.

Isu Kod Fungsi Berlebihan

Seperti yang digambarkan dalam coretan kod yang disediakan, banyak fungsi berkongsi logik yang serupa tetapi mengendalikan jenis yang berbeza. Pengulangan ini boleh membawa kepada kod berlebihan.

Penyelesaian: Antara Muka{} Jenis

Satu pendekatan untuk mengurangkan lebihan adalah dengan menggunakan antara muka Go's{} jenis, jenis khas yang serasi dengan semua jenis. Dengan mengubah suai fungsi untuk menerima dan mengembalikan nilai{} antara muka, logik biasa boleh dipusatkan.

<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 0
        }
    }
    return v
}</code>
Salin selepas log masuk

Kod Pelanggan

Dalam kod klien, fungsi Dapatkan boleh digunakan untuk mendapatkan nilai jenis tertentu:

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

atau mengendalikan pemeriksaan jenis secara eksplisit:

<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

Kelemahan dan Alternatif

Semasa pendekatan{} antara muka mengurangkan lebihan kod, ia memperkenalkan overhed masa jalan. Penyelesaian yang lebih baik mungkin melibatkan pemfaktoran semula kod untuk menghapuskan keperluan untuk logik berulang.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Mencapai Pengaturcaraan Generik untuk Fungsi Variadik dalam Go Tanpa Templat atau Fungsi Terlebih Beban?. 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!