Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menambahkan Hujah dengan Cekap pada Pembungkus Fungsi Variadik dalam Go?

Bagaimana untuk Menambahkan Hujah dengan Cekap pada Pembungkus Fungsi Variadik dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-11-02 01:29:02554semak imbas

How to Efficiently Append Arguments to a Variadic Function Wrapper in Go?

Penambahan Cekap pada Pembungkus Fungsi Variadik

Fungsi variadik dalam Go, seperti fmt.Println, membolehkan anda menghantar bilangan argumen yang berubah-ubah . Apabila menggunakan fungsi pembalut untuk tujuan penyahpepijatan, bagaimanapun, menambahkan argumen tambahan boleh membawa kepada isu peruntukan memori.

Dalam contoh yang diberikan, dua percubaan pertama untuk melanjutkan fungsi fmt.Fprintln dengan argumen tambahan mengakibatkan ralat. Kaedah ketiga melibatkan membina kepingan baharu secara manual, yang memperkenalkan overhed.

Untuk mengelakkan pengagihan semula memori, anda boleh menggunakan fungsi tambah:

<code class="go">func Debug(a ...interface{}) {
    if debug {
        fmt.Fprintln(out, append([]interface{}{prefix, sep}, a...)...)
    }
}</code>

Pelapis satu ini mengambil kepingan sedia ada hujah (a) dan memanjangkannya dengan item tambahan (awalan dan sep) menggunakan append. Potongan yang terhasil kemudian dihantar ke fmt.Fprintln, memastikan pengembangan hujah yang cekap tanpa memerlukan peruntukan memori yang jelas.

Atas ialah kandungan terperinci Bagaimana untuk Menambahkan Hujah dengan Cekap pada Pembungkus 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