在 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]
引用从low
到high - 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 中如何使用切片进行复制? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章