我想看看是否有一種簡單的方法可以用另一個(gè)切片的所有值替換切片的一部分。例如: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 還很陌生。所以也許我的處理方式是錯(cuò)誤的。
2 回答

拉丁的傳說
TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以使用內(nèi)置副本:
copy 內(nèi)置函數(shù)將源切片中的元素復(fù)制到目標(biāo)切片中。
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]
}

呼喚遠(yuǎn)方
TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊
中有一個(gè)Replace
函數(shù)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)
}
- 2 回答
- 0 關(guān)注
- 235 瀏覽
添加回答
舉報(bào)
0/150
提交
取消