editor php Apple akan memperkenalkan anda cara mengalihkan elemen dari satu kepingan ke kepingan yang lain. Dalam pengaturcaraan, slice ialah struktur data yang biasa digunakan yang boleh menyimpan berbilang elemen. Kadangkala, kita perlu mengeluarkan elemen daripada satu kepingan dan mengalihkannya ke kepingan lain. Proses ini mungkin melibatkan pemadaman elemen, sisipan, operasi pengindeksan, dsb. Seterusnya, kami akan membincangkan secara terperinci cara melaksanakan operasi ini untuk membantu semua orang lebih memahami dan menggunakan pengetahuan berkaitan penghirisan.
package main import ( "fmt" ) func main() { arr0 := []int{ 1,2,3,4,5, } arr1 := []int{} fmt.println(arr0) fmt.println(arr1) fmt.println("transferring...") transfer(&arr0, &arr1) fmt.println(arr0) fmt.println(arr1) } func transfer(arr0 *[]int, arr1 *[]int) { tmp := make([]int, 0) for i:=0;i<len(*arr0);i++ { tmp = append(tmp, (*arr0)[i]) } arr1 = &tmp s := make([]int, 0) arr0 = &s }
Untuk fungsi pemindahan, saya bercadang untuk memindahkan elemen slice arr0 ke slice arr1 dan slice arr0 kosong
Tetapi ia tidak berjaya
Ini hasil keluaran saya
[1 2 3 4 5] [] transferring... [1 2 3 4 5] []
Selepas pemindahan, saya memerlukan keputusan berikut. [] [1 2 3 4 5] Tetapi sebenarnya, arr0 dan arr1 dalam fungsi utama tetap sama!
Bolehkah seseorang memberitahu saya mengapa ini tidak berkesan?
Saya rasa dalam ingatan saya, sepatutnya begini
Selepas menjalankan fungsi pemindahan
Dua baris ini:
arr1 = &tmp arr0 = &s
Tukar pembolehubah tempatan dalam fungsi arr1
和 arr0
。这些变量恰好是指针,但它们只是 main
kepada salinan penuding input yang disediakan - ia bukan rujukan kepada penuding input.
Jika anda menukar arr1
和 arr0
指针指向的内容,而不是指针本身,那么您将看到 main
nilai yang disediakan berubah:
*arr1 = tmp *arr0 = s
Atas ialah kandungan terperinci Bagaimana untuk memindahkan elemen dari satu kepingan ke yang lain. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!