Pembungkus Fungsi Variadik: Menambah Item Tanpa Pengagihan Semula Memori
Fungsi variadik menyediakan cara yang mudah untuk menghantar bilangan argumen arbitrari kepada fungsi. Walau bagaimanapun, apabila membungkus fungsi variadik, menambahkan item tambahan boleh menyebabkan peruntukan memori. Artikel ini mengkaji pendekatan yang berbeza untuk mengelakkan peruntukan memori yang tidak perlu dalam pembungkus tersebut.
Pendekatan Tidak Cekap
Percubaan untuk memanjangkan kepingan variadic secara terus menggunakan operator elipsis "..." (Pendekatan 1) boleh mengakibatkan ralat "terlalu banyak hujah" atau isu ketidakpadanan jenis (Pendekatan 2).
Pendekatan 3 memperuntukkan kepingan baharu untuk menampung item tambahan, yang boleh menjadi tidak cekap untuk operasi pengelogan atau penyahpepijatan yang kerap .
Pendekatan Cekap
Pendekatan yang lebih cekap melibatkan penggunaan fungsi tambah untuk mengembangkan kepingan secara dinamik tanpa pengagihan semula. Fungsi append mengembalikan kepingan baharu dengan item tambahan yang dilampirkan pada kepingan sedia ada.
<code class="go">func Debug(a ...interface{}) { if debug { fmt.Fprintln(out, append([]interface{}{prefix, sep}, a...)...) } }</code>
Pelapis satu ini menambahkan awalan dan pemisah pada kepingan yang dicipta daripada argumen variadic asal (a) dan melepasi terhasil hirisan ke fmt.Fprintln. Dengan memanfaatkan fungsi tambahan, pendekatan ini mengelakkan pengagihan semula memori sambil memenuhi keperluan parameter fungsi variadik.
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Menambah Item pada Pembungkus Fungsi Variadik Tanpa Pengagihan Semula Memori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!