我想看看是否有一种简单的方法可以用另一个切片的所有值替换切片的一部分。例如:x := []int{1,2,0,0}y := []int{3,4}// goal is x == {1,2,3,4}x[2:] = y // compile errorx[2:] = y[:] // compile error我知道我总是可以遍历 y,但是 Go 有很多很酷的特性,而且我对 Go 还是很陌生。所以也许我会以错误的方式解决这个问题。
1 回答
守着星空守着你
TA贡献1799条经验 获得超8个赞
您可以使用内置副本:
复制内置函数将元素从源切片复制到目标切片。
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]
}
https://play.golang.org/p/TL6Bv4OGeqE
从上面的评论中窃取,您可以在此处了解有关切片的更多信息:
https://golang.org/ref/spec#Appending_and_copying_slices
https://golang.org/doc/effective_go.html#slices
https://github.com/golang/go/wiki/SliceTricks
我还发现这篇博文内容丰富:https ://divan.dev/posts/avoid_gotchas/#arrays-and-slices
- 1 回答
- 0 关注
- 155 浏览
添加回答
举报
0/150
提交
取消