Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mencipta Salinan Dalam Go Slice dengan Cekap?

Bagaimana untuk Mencipta Salinan Dalam Go Slice dengan Cekap?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-28 10:36:17538semak imbas

How to Efficiently Create a Deep Copy of a Go Slice?

Membuat Salinan Dalaman Slice dalam Go

Apabila bekerja dengan kepingan dalam Go, adalah penting untuk mengetahui cara membuat salinan dalam untuk memastikan bahawa perubahan yang dibuat kepada satu salinan tidak menjejaskan yang asal. Satu pendekatan yang cekap ialah memanfaatkan fungsi salinan terbina dalam.

Menggunakan Fungsi 'salinan'

Fungsi salin mengambil dua keping sebagai hujah, kepingan destinasi dst dan hirisan sumber src. Ia menyalin elemen dari src ke dst, walaupun dua keping bertindih. Fungsi mengembalikan bilangan elemen yang berjaya disalin.

Contoh:

cpy := make([]T, len(orig))
n := copy(cpy, orig)

Dalam contoh ini, cpy hirisan baharu dibuat dengan panjang yang sama dengan yang asal hiris orig. Fungsi salin kemudiannya digunakan untuk menyalin elemen daripada orig ke cpy, dengan n mewakili bilangan elemen yang disalin.

Prestasi Penanda Aras

Untuk membandingkan prestasi salinan fungsi dengan kaedah tambah yang biasa digunakan, penanda aras telah dijalankan. Keputusan menunjukkan bahawa kedua-dua kaedah mempunyai prestasi yang setanding:

BenchmarkCopy: 24724 ns/op
BenchmarkAppend: 24967 ns/op

Pertimbangan

Adalah penting untuk ambil perhatian bahawa sementara fungsi salin mencipta salinan dalam nilai hirisan, ia tidak mengendalikan penyalinan penunjuk atau struktur dengan medan penunjuk. Medan ini masih akan menunjukkan nilai yang sama seperti dalam kepingan asal.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Salinan Dalam Go Slice dengan Cekap?. 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