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

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

程序

package main

import (
    "fmt"
)

func main() {
    scores := []int{1, 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 来回答。

标签: go copy slice


【解决方案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 个元素,因此源的前两个元素被复制到目标。

    【讨论】:

      猜你喜欢
      • 2021-01-12
      • 2021-07-14
      • 2019-01-08
      • 2014-01-22
      • 2020-12-10
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多