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

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

WBOY
發布: 2024-02-10 17:40:08
轉載
1049 人瀏覽過

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

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!