如何在 go 中用另一个切片替换一部分

caf*_*ein 7 arrays go slice

我想看看是否有一种简单的方法可以用另一个切片的所有值替换切片的一部分。例如:

x := []int{1,2,0,0}
y := []int{3,4}

// goal is x == {1,2,3,4}

x[2:] = y    // compile error
x[2:] = y[:] // compile error
Run Code Online (Sandbox Code Playgroud)

我知道我总是可以迭代 y,但是 Go 有很多很酷的功能,而且我对 Go 还很陌生。所以也许我的处理方式是错误的。

mik*_*iku 15

您可以使用内置副本

copy 内置函数将源切片中的元素复制到目标切片中。

package main

import "fmt"

func main() {
    x := []int{1, 2, 0, 0}
    y := []int{3, 4}

    copy(x[2:], y)

    fmt.Println(x) // [1 2 3 4]
}
Run Code Online (Sandbox Code Playgroud)

从上面的评论中窃取,您可以在这里了解有关切片的更多信息:

我还发现这篇博文内容丰富:https://divan.dev/posts/avoid_gotchas/#arrays-and-slices

  • 谢谢米库!效果非常好。另外,play.golang.org 链接也非常酷。 (2认同)