Memahami Mengapa copy() Gagal Menduakan Kepingan Kosong
Dalam Go, fungsi copy() bertujuan untuk menyalin elemen antara dua keping , membenarkan potensi pertindihan dalam proses. Walau bagaimanapun, apabila cuba menyalin kepingan kosong, tingkah laku yang tidak dijangka boleh timbul.
Akar Isu:
Dokumentasi menyatakan bahawa copy() menyalin elemen daripada kepingan sumber ke dalam kepingan destinasi, mengembalikan bilangan elemen yang disalin. Yang penting, nombor ini ditentukan oleh panjang minimum kepingan sumber dan destinasi, seperti yang dinyatakan dalam Spesifikasi Bahasa Go.
Masalah Slice Destinasi Kosong:
Apabila kepingan destinasi kosong (iaitu, len(dst) == 0), panjang minimum menjadi sifar, menyebabkan tiada unsur disalin. Inilah sebabnya dalam contoh anda, copy() gagal mengisi kepingan tmp anda.
Penyelesaian:
Untuk memintas isu ini dan berjaya menyalin kepingan kosong, anda mesti mula-mula mulakan kepingan destinasi dengan kapasiti yang mencukupi. Ini boleh dicapai menggunakan make([]int, len(arr)).
Dokumentasi Dikemas Kini:
Dokumentasi untuk copy() telah dikemas kini untuk menyatakan secara eksplisit bahawa minimum panjang kepingan sumber dan destinasi disalin. Penjelasan ini menangani percanggahan yang dihadapi semasa cuba menduplikasi kepingan kosong.
Atas ialah kandungan terperinci Mengapakah `copy()` Gagal Mendua Kepingan Kosong dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!