gpt4 book ai didi

go - slice 副本未按预期工作

转载 作者:数据小太阳 更新时间:2023-10-29 03:38:18 24 4
gpt4 key购买 nike

在下面的 Go 程序中,我创建了包含 6 个元素的 mySlice1mySlice2 用 3 个元素初始化。

mySlice1 我将第一个两个元素放入 mySlice2。同样利用slice的copy函数,将mySlice1的3个元素覆盖到mySlice2

package main

import "fmt"

func main() {

mySlice1 := []int{1, 3, 5, 7, 9, 11}
mySlice2 := make([]int,3)
mySlice2 = mySlice1[0:2]
copy(mySlice2,mySlice1)
fmt.Printf("%T\t%T\n", mySlice1,mySlice2)
fmt.Println(mySlice1,mySlice2)
}

但是在打印 mySlice2 时,我只得到了两个元素。

$ go run main.go
[]int []int
[1 3 5 7 9 11] [1 3]

为什么 mySlice2 在使用 copy 函数时没有被覆盖?

最佳答案

如果你想让 mySlice2 有 3 个元素,你应该使用:

myslice2 = mySlice1[0,3]

或者只是:

copy(mySlice2,mySlice1)

您确实创建了一个长度为 3 的 slice ,但是您随后将其重新分配为长度 2。您可以在分配前后使用 len(mySlice2) 查看它

关于go - slice 副本未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36888178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com