Bagaimana untuk Memindahkan Item dalam Sekeping dalam Pergi Tanpa Penduaan?

Linda Hamilton
Lepaskan: 2024-11-02 09:06:29
asal
696 orang telah melayarinya

How to Move an Item Within a Slice in Go Without Duplication?

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)
Salin selepas log masuk

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] 
Salin selepas log masuk

Seperti yang anda perhatikan, item dalam kedudukan asal diduplikasi apabila dimasukkan.

Penyelesaian:

Untuk betul alihkan item dalam kepingan, anda boleh menggunakan pendekatan berikut:

  1. Alih keluar Item daripada Kedudukan Asalnya:

    removeItem := slice[indexToRemove]
    updatedSlice := append(slice[:indexToRemove], slice[indexToRemove+1:]...)
    fmt.Println("Updated slice before moving:", updatedSlice)
    Salin selepas log masuk
  2. Masukkan Item pada Kedudukan Baharu:

    insertedSlice := append(updatedSlice[:indexWhereToInsert], removeItem)
    finalSlice := append(insertedSlice, updatedSlice[indexWhereToInsert:]...)
    fmt.Println("Final slice after moving:", finalSlice)
    Salin selepas log masuk

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)
}
Salin selepas log masuk

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]
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!