Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan copy() dalam bahasa Go

Cara menggunakan copy() dalam bahasa Go

青灯夜游
青灯夜游asal
2023-01-10 11:48:513029semak imbas

Dalam bahasa Go, copy() digunakan untuk menyalin hirisan tatasusunan ke hirisan tatasusunan yang lain bilangan elemen dalam kepingan tatasusunan itu disalin; Apabila menggunakan fungsi copy() untuk menyalin kepingan, jika panjang kepingan sumber lebih besar daripada panjang kepingan destinasi, salinan itu akan menjadi tidak lengkap.

Cara menggunakan copy() dalam bahasa Go

Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.

Salin() fungsi terbina dalam bahasa Go boleh menyalin satu hirisan tatasusunan ke hirisan tatasusunan yang lain Jika dua hirisan tatasusunan yang ditambahkan tidak sama saiz, unsur hirisan tatasusunan yang lebih kecil akan digunakan salinan.

Salinan bahasa Go(): copy slice (slice copy)

Slice copy bahasa Go menggunakan fungsi copy() terbina dalam . Apabila menggunakan fungsi copy() untuk menyalin kepingan, jika panjang kepingan sumber lebih besar daripada panjang kepingan destinasi, salinan itu akan menjadi tidak lengkap. Format penggunaan fungsi

copy() adalah seperti berikut:

copy( destSlice, srcSlice []T) int
  • srcSlice ialah kepingan sumber data

  • destSlice ialah salinan Sasaran (iaitu salin srcSlice ke destSlice)

    Kepingan sasaran mesti mempunyai ruang yang diperuntukkan dan cukup untuk membawa bilangan elemen yang disalin, dan jenis sumber dan sasaran mestilah konsisten

Nilai pulangan:

  • menunjukkan bilangan elemen yang sebenarnya disalin.

Penjelasan

  • Salin slice src ke slice dst dan kembalikan bilangan elemen yang berjaya disalin. Jika panjang slice src lebih besar daripada panjang slice dst, hanya elemen panjang slice dst sahaja disalin.

Kod berikut menunjukkan proses menyalin satu kepingan kepada yang lain menggunakan fungsi copy():

slice1 := []int{1, 2, 3, 4, 5}
slice2 := []int{5, 4, 3}
copy(slice2, slice1) // 只会复制slice1的前3个元素到slice2中
copy(slice1, slice2) // 只会复制slice2的3个元素到slice1的前3个位置

Walaupun menyalin elemen kepingan melalui gelung adalah lebih mudah , tetapi fungsi copy() terbina dalam lebih mudah digunakan Parameter pertama fungsi copy() ialah kepingan sasaran yang akan disalin, dan parameter kedua ialah kepingan sumber Kedua-dua keping boleh berkongsi asas yang sama tatasusunan, dan juga bertindih Tiada masalah sama ada.

Kes

1. Tunjukkan kesan rujukan kepada operasi potong dan salin pada elemen kepingan melalui kod.

package main
import "fmt"
func main() {
    // 设置元素数量为1000
    const elementCount = 1000
    // 预分配足够多的元素切片
    srcData := make([]int, elementCount)
    // 将切片赋值
    for i := 0; i < elementCount; i++ {
        srcData[i] = i
    }
    // 引用切片数据
    refData := srcData
    // 预分配足够多的元素切片
    copyData := make([]int, elementCount)
    // 将数据复制到新的切片空间中
    copy(copyData, srcData)
    // 修改原始数据的第一个元素
    srcData[0] = 999
    // 打印引用切片的第一个元素
    fmt.Println(refData[0])
    // 打印复制切片的第一个和最后一个元素
    fmt.Println(copyData[0], copyData[elementCount-1])
    // 复制原始数据从4到6(不包含)
    copy(copyData, srcData[4:6])
    for i := 0; i < 5; i++ {
        fmt.Printf("%d ", copyData[i])
    }
}

Cara menggunakan copy() dalam bahasa Go

Penerangan kod adalah seperti berikut:

  • Barisan 8 mentakrifkan jumlah bilangan elemen sebagai 1000.

  • Baris 11, pra-peruntukkan kepingan integer 1000 elemen, yang akan digunakan sebagai data asal.

  • Baris 14 hingga 16 mengisi srcData dengan nilai integer ​​dari 0 hingga 999.

  • Baris 19, refData merujuk kepada srcData, dan kepingan itu tidak akan menyalin elemen disebabkan oleh operasi tanda sama.

  • Barisan 22, pra-peruntukkan sekeping copyData dengan saiz yang sama (saiz yang sama) dan jenis yang sama seperti srcData.

  • Baris 24, gunakan fungsi copy() untuk menyalin data asal ke ruang kepingan copyData.

  • Baris 27, ubah suai elemen pertama data asal kepada 999.

  • Baris 30, elemen pertama data yang dirujuk akan berubah.

  • Baris 33, mencetak data pertama data yang disalin Memandangkan data disalin, ia tidak akan berubah.

  • Baris 36, salin data setempat srcData ke copyData.

  • Baris 38 hingga 40 mencetak elemen copyData selepas menyalin data setempat.

2. Apabila panjang kepingan sumber lebih besar daripada panjang kepingan destinasi, salinannya tidak lengkap

package main
import (
	"fmt"
)
func main() {
	//当源切片的长度大于目的切片长度时,复制不完整
	var sliceSrc = []string{"PHPCN", "Python", "Golang"}
	var sliceDst = []string{"Hello", "HaiCoder"}
	copy(sliceDst, sliceSrc)
	fmt.Println("sliceDst =", sliceDst)
}

Cara menggunakan copy() dalam bahasa Go

[Cadangan berkaitan: Pergi tutorial video, Pengajaran pengaturcaraan]

Atas ialah kandungan terperinci Cara menggunakan copy() dalam bahasa 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