修改切片副本中的值然后附加到原始切片

2024年 2月 9日 56.3k 0

修改切片副本中的值然后附加到原始切片

在PHP中,切片(Slice)是一种常用的数据结构,它允许我们从一个数组或切片中选取一部分元素。然而,有时候我们需要对切片进行修改,并将修改后的值附加到原始切片中。这种操作在PHP中是可以实现的,通过修改切片副本中的值,然后使用array_splice函数将修改后的副本附加到原始切片中即可。在本文中,我们将详细介绍如何使用这种方法实现切片的修改和附加操作。

问题内容

编写一个函数来复制切片并修改切片副本中项目的值,然后将副本附加到原始副本。看起来代码不仅修改了切片的副本,还修改了原始切片。

去游乐场

import "fmt"

type item struct {
name string
number int
}

func main() {
names := []string{"a", "b"}
numbers := []int{1, 2}

items := []*item{}

for _, name := range names {
item := &item{name: name}
items = append(items, item)
}

for n, i := range numbers {
if n > 0 {
fmt.println(n, "make a copy of the items")
itemcopies := make([]*item, len(items))
copy(itemcopies, items)

fmt.println(n, "set the numbers on the copies")
for _, item := range itemcopies {
item.number = i
}

fmt.println(n, "append the copies to the original")
items = append(items, itemcopies...)
} else {

fmt.println(n, "first pass set all the items to the first number")
for _, item := range items {
item.number = i
}
}
}

for n, i := range items {
fmt.printf("%d %+vn", n, *i)
}
}

登录后复制

我实际看到的

0 {name:a number:2}
1 {name:b number:2}
2 {name:a number:2}
3 {name:b number:2}

登录后复制

我期望看到什么

0 {name:a number:1}
1 {name:b number:1}
2 {name:a number:2}
3 {name:b number:2}

登录后复制

解决方法

@jimb 是对的,你复制指针,

我建议定义一个属于struct item的copy函数来新建一个副本

package main

import "fmt"

type Item struct {
name string
number int
}

func (it *Item) copy() *Item {
return &Item{
name: it.name,
number: it.number,
}
}
func main() {
names := []string{"a", "b"}
numbers := []int{1, 2}

items := []*Item{}

for _, name := range names {
item := &Item{name: name}
items = append(items, item)
}

for n, i := range numbers {
if n > 0 {
fmt.Println(n, "make a copy of the items")
itemCopies := make([]*Item, len(items))

for j := 0; j 登录后复制

以上就是修改切片副本中的值然后附加到原始切片的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论