亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

刪除切片中的元素時分配給新變量會產生意外結果

刪除切片中的元素時分配給新變量會產生意外結果

Go
Cats萌萌 2021-09-21 20:48:25
嘗試刪除切片中的元素時,我看到了一些意外行為。下面是我的代碼:package mainimport "fmt"func main() {    x := []int{1,2,3,4,5,6,7,8}    y := append(x[:3],x[4:]...)    fmt.Println(x)    fmt.Println(y)}輸出是:[1 2 3 5 6 7 8 8][1 2 3 5 6 7 8]我希望輸出是:[1 2 3 4 5 6 7 8][1 2 3 5 6 7 8]為什么結果不是我預期的?換句話說,由于沒有更改值的賦值,x我希望它具有相同的初始化值,但由于某種原因,它沒有并且具有y與復制的最后一個元素相同的值。這是一個錯誤嗎?
查看完整描述

2 回答

?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

append當有足夠的空間可用時,該函數就地運行。切掉避免這種行為的能力:

y := append(x[:3:3],x[4:]...)


查看完整回答
反對 回復 2021-09-21
?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

這就是發生的情況,當您追加時,x 會發生變化。


x = [1,2,3,  4,5,6,7, 8]

    [1,2,3] [5,6,7,8] # 4th, 5th, 6th, 7th elements are changed

     x[:3]    x[4:]


x = [1,2,3,5,6,7,8,8]


查看完整回答
反對 回復 2021-09-21
  • 2 回答
  • 0 關注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號