猿问

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

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


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

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


潇潇雨雨
浏览 168回答 2
2回答

拉丁的传说

您可以使用内置副本:copy 内置函数将源切片中的元素复制到目标切片中。package mainimport "fmt"func main() {    x := []int{1, 2, 0, 0}    y := []int{3, 4}    copy(x[2:], y)    fmt.Println(x) // [1 2 3 4]}

呼唤远方

中有一个Replace函数x/exp/slices:Replace 将元素 s[i:j] 替换为给定的 v,并返回修改后的切片。如果 s[i:j] 不是 s 的有效切片,则替换恐慌。import (    "fmt"    "golang.org/x/exp/slices")func main() {    x := []int{1, 2, 0, 0}    y := []int{3, 4}    z := slices.Replace(x, 2, 4, y...)    fmt.Println(z)}操场
随时随地看视频慕课网APP

相关分类

Go
我要回答