卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章35247本站已运行394

如何将元素从一个切片移动到另一个切片

如何将元素从一个切片移动到另一个切片

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

卓越飞翔博客
上一篇: Apache Beam 从 Go 中的 PCollection 中选择前 N 行
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏