首頁  >  文章  >  後端開發  >  如何將元素從一個切片移動到另一個切片

如何將元素從一個切片移動到另一個切片

WBOY
WBOY轉載
2024-02-10 17:40:081049瀏覽

如何將元素從一個切片移動到另一個切片

php小編蘋果將為大家介紹如何將元素從一個切片移到另一個切片的方法。在程式設計中,切片是一種常用的資料結構,它可以儲存多個元素。有時候,我們需要將某個元素從一個切片中取出,並將其移動到另一個切片中。這個過程可能涉及元素的刪除、插入、索引操作等。接下來,我們將詳細討論如何實現這個操作,幫助大家更好地理解和應用切片的相關知識。

問題內容

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
}

對於轉移功能,我打算將切片arr0的元素轉移到切片arr1和空切片arr0

但是沒有成功

這是我的輸出

[1 2 3 4 5]
[]
transferring...
[1 2 3 4 5]
[]

傳輸後,我需要以下結果。 [] [1 2 3 4 5] 但實際上,main函數中的arr0和arr1保持原樣!

有人可以告訴我為什麼這樣不行嗎?

我在記憶裡想,應該是這樣的

運行傳遞函數後

解決方法

這兩行:

arr1 = &tmp
arr0 = &s

更改函數內的局部變數 arr1arr0 。這些變數恰好是指針,但它們只是 main 提供的輸入指針的副本 - 它們不是對輸入指針的引用

如果您更改了arr1arr0 指標指向的內容,而不是指標本身,那麼您將看到main 提供的值發生變更:

*arr1 = tmp
*arr0 = s

以上是如何將元素從一個切片移動到另一個切片的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除