首頁 > 後端開發 > Golang > 主體

如何在 Go 中移動切片內的項目而不重複?

Linda Hamilton
發布: 2024-11-02 09:06:29
原創
696 人瀏覽過

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

在Go 中移動切片內的項目

在Go 中,操作切片是很常見的,切片是動態資料結構,包含元素的序列。您可能遇到的一項任務是將切片內的項目從一個位置移動到另一個位置。

要解決此問題,您可以嘗試以下方法:

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)
登入後複製

但是,此方法會導致意外行為:

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] 
登入後複製

正如您所注意到的,插入時原始位置的項目會重複。

解:

要正確移動切片內的物品時,可以使用以下方法:

  1. 將物品從其原始位置移除:

    removeItem := slice[indexToRemove]
    updatedSlice := append(slice[:indexToRemove], slice[indexToRemove+1:]...)
    fmt.Println("Updated slice before moving:", updatedSlice)
    登入後複製
  2. 在新位置插入項目:

    insertedSlice := append(updatedSlice[:indexWhereToInsert], removeItem)
    finalSlice := append(insertedSlice, updatedSlice[indexWhereToInsert:]...)
    fmt.Println("Final slice after moving:", finalSlice)
    登入後複製

這是一個有效的程式碼範例:
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)
}
登入後複製

輸出:
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]
登入後複製

以上是如何在 Go 中移動切片內的項目而不重複?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!