Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Memindahkan Item dalam Sekeping dalam Pergi Tanpa Penduaan?
Menggerakkan Item Dalam Slice dalam Go
Dalam Go, adalah perkara biasa untuk memanipulasi kepingan, yang merupakan struktur data dinamik yang memegang urutan unsur. Satu tugasan yang mungkin anda hadapi ialah mengalihkan item dari satu kedudukan ke satu lagi dalam kepingan.
Untuk menangani perkara ini, anda boleh mencuba pendekatan berikut:
slice := []int{0,1,2,3,4,5,6,7,8,9} indexToRemove := 1 indexWhereToInsert := 4 slice = append(slice[:indexToRemove], slice[indexToRemove+1:]...) fmt.Println("slice:", slice) newSlice := append(slice[:indexWhereToInsert], 1) fmt.Println("newSlice:", newSlice) slice = append(newSlice, slice[indexWhereToInsert:]...) fmt.Println("slice:", slice)
Walau bagaimanapun, pendekatan ini menghasilkan dalam tingkah laku yang tidak dijangka:
slice: [0 2 3 4 5 6 7 8 9] newSlice: [0 2 3 4 1] slice: [0 2 3 4 1 1 6 7 8 9]
Seperti yang anda perhatikan, item dalam kedudukan asal diduplikasi apabila dimasukkan.
Penyelesaian:
Untuk betul alihkan item dalam kepingan, anda boleh menggunakan pendekatan berikut:
Alih keluar Item daripada Kedudukan Asalnya:
removeItem := slice[indexToRemove] updatedSlice := append(slice[:indexToRemove], slice[indexToRemove+1:]...) fmt.Println("Updated slice before moving:", updatedSlice)
Masukkan Item pada Kedudukan Baharu:
insertedSlice := append(updatedSlice[:indexWhereToInsert], removeItem) finalSlice := append(insertedSlice, updatedSlice[indexWhereToInsert:]...) fmt.Println("Final slice after moving:", finalSlice)
Berikut ialah contoh kod berfungsi:
func main() { slice := []int{0,1,2,3,4,5,6,7,8,9} indexToRemove := 1 indexWhereToInsert := 4 removeItem := slice[indexToRemove] updatedSlice := append(slice[:indexToRemove], slice[indexToRemove+1:]...) fmt.Println("Updated slice before moving:", updatedSlice) insertedSlice := append(updatedSlice[:indexWhereToInsert], removeItem) finalSlice := append(insertedSlice, updatedSlice[indexWhereToInsert:]...) fmt.Println("Final slice after moving:", finalSlice) }
Output :
Updated slice before moving: [0 2 3 4 5 6 7 8 9] Final slice after moving: [0 2 3 4 1 5 6 7 8 9]
Atas ialah kandungan terperinci Bagaimana untuk Memindahkan Item dalam Sekeping dalam Pergi Tanpa Penduaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!