在 golang 中如何使用切片进行复制? [关闭]

Posted

技术标签:

【中文标题】在 golang 中如何使用切片进行复制? [关闭]【英文标题】:How does copy with slices work in golang? [closed] 【发布时间】:2021-09-11 00:58:21 【问题描述】:

我有一个切片,我使用copy 方法将切片复制到另一个切片,我不确定如何获得以下程序的以下输出?

程序

package main

import (
    "fmt"
)

func main() 
    scores := []int1, 2, 3, 4, 5
    fmt.Println(scores[:5])
    worst := make([]int, 5)
    copy(worst[2:4], scores[:5])
    fmt.Println(worst)

输出

[1, 2, 3, 4, 5]
[0, 0, 1, 2, 0]

最坏的最后一个0不应该是复制后的3吗?

【问题讨论】:

这很容易通过查看worst[2:4] 产生的内容、获取the tour 或阅读documentation 来回答。 【参考方案1】:

切片表达式a[low : high] 引用从lowhigh - 1 的元素。

copy 函数复制的元素数量是源和目标中元素数量的最小值。

调用 copy(worst[2:4], scores[:5]) 设置元素 2 和 3 只是因为目标引用了这两个元素。

【讨论】:

【参考方案2】:

正如copy 的文档所述:

https://golang.org/pkg/builtin/#copy

copy 将复制 len(src) 和 len(dst) 的最小值。在这种情况下,目标是 worst[2:4],其中包含 2 个元素,因此源的前两个元素被复制到目标。

【讨论】:

以上是关于在 golang 中如何使用切片进行复制? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Golang中切片复制成本,一个大切片会比小切片占用更多内存吗?

如何在golang中获取随机数的样本? [关闭]

Golang多维切片拷贝

golang使用注意点

Golang basic_leaming切片

Golang basic_leaming切片