Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Fungsi `copy()` Go Berfungsi Dengan Hirisan Bertindih?

Bagaimanakah Fungsi `copy()` Go Berfungsi Dengan Hirisan Bertindih?

Barbara Streisand
Barbara Streisandasal
2024-11-01 02:19:28703semak imbas

How Does Go's `copy()` Function Work With Overlapping Slices?

Fungsi Salin Dijelaskan: Panduan Komprehensif

Fungsi salin dalam Go digunakan untuk menduplikasi elemen daripada kepingan sumber kepada kepingan destinasi. Ia memerlukan dua parameter: kepingan destinasi dan kepingan sumber, kedua-duanya mesti mempunyai jenis elemen yang sama.

Cara copy() Berfungsi

copy() copy elemen daripada hirisan sumber ke hirisan destinasi, tetapi hanya sehingga panjang minimum dua keping. Jika kepingan sumber lebih pendek daripada kepingan destinasi, hanya elemen dalam kepingan sumber akan disalin. Sebaliknya, jika kepingan destinasi lebih pendek daripada kepingan sumber, hanya elemen len(dst) pertama disalin.

Aspek penting copy() ialah ia boleh mengendalikan kepingan bertindih. Iaitu, ia boleh menyalin elemen daripada kepingan sumber ke kepingan destinasi yang berkongsi tatasusunan asas yang sama. Ini boleh berguna untuk operasi seperti mengalih elemen atau menyusun semula kepingan.

Contoh Kes Guna

Di bawah ialah beberapa contoh cara copy() boleh digunakan:

  • Membuat salinan kepingan:

    <code class="go">src := []int{10, 11, 12, 13, 14}
    dst := make([]int, len(src))
    n := copy(dst, src)
    fmt.Println("n =", n, "src =", src, "dst =", dst)</code>

    Output:

    n = 5 src = [10 11 12 13 14] dst = [10 11 12 13 14]
  • Menyalin sebahagian daripada kepingan:

    <code class="go">src := []int{10, 11, 12, 13, 14}
    dst := make([]int, 2)
    n := copy(dst, src[1:])
    fmt.Println("n =", n, "src =", src, "dst =", dst)</code>

    Output:

    n = 2 src = [10 11 12 13 14] dst = [11 12]
  • Hirisan bertindih:

    <code class="go">src := []int{10, 11, 12, 13, 14}
    dst := src[1:]
    n := copy(dst, src)
    fmt.Println("n =", n, "src =", src, "dst =", dst)</code>

    Output:

    n = 4 src = [10 11 12 13 14] dst = [11 12 13 14]

Kes Khas: Menyalin daripada Rentetan kepada Kepingan Bait

copy() juga boleh digunakan untuk menyalin bait daripada rentetan kepada kepingan bait. Ini berguna untuk menukar rentetan kepada tatasusunan bait atau untuk bekerja dengan data bait.

Contohnya:

<code class="go">str := "Hello, World!"
data := make([]byte, 5)
n := copy(data, str)
fmt.Println("n =", n, "str =", str, "data =", data)</code>

Output:

n = 5 str = Hello, World! data = [72 101 108 108 111]

Kesimpulan

Fungsi salin dalam Go ialah alat serba boleh untuk bekerja dengan kepingan. Ia menyediakan cara ringkas dan cekap untuk menduplikasi hirisan, menyalin bahagian hirisan, dan juga mengendalikan hirisan bertindih. Memahami cara copy() berfungsi adalah penting untuk manipulasi kepingan yang berkesan dalam Go.

Atas ialah kandungan terperinci Bagaimanakah Fungsi `copy()` Go Berfungsi Dengan Hirisan Bertindih?. 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