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

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

為什么切片追加元素不更新引用的元素?

為什么切片追加元素不更新引用的元素?

Go
智慧大石 2022-10-17 15:58:01
這條規則就是我對 Go 中 slice 的了解當元素的數量和容量的寬度相同時(len(fruits) == cap(fruits)),append() 產生的新元素就是新的引用。當元素個數小于容量(len(fruits) < cap(fruits))時,新元素被放入容量范圍內,導致所有其他具有相同引用的切片元素值發生變化。我有這樣的代碼package mainimport (    "fmt")func main() {    //declare slice    var fruits = []string{"banana", "mango", "tomato"}    //using two index technique to make slice    var newFruits = fruits[1:2]    //append element to fruits slice    fruits = append(fruits, "papaya")        //append element to newFruits slice    newFruits = append(newFruits, "dragon")    fmt.Println(cap(fruits)) //2    fmt.Println(cap(newFruits)) //6    fmt.Println(newFruits) //[mango dragon]    fmt.Println(fruits) //[banana mango tomato papaya]    }為什么水果的價值不是【香蕉芒果龍木瓜】?
查看完整描述

1 回答

?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

以下是代碼的工作原理:

就在附加papaya到之前fruits,

fruits = {"banana", "mango", "tomato"}

newFruits指向與 相同fruits但從 開始的數組mango。

當您追加papaya到時fruits,將創建一個容量=6 的新數組,因為 的容量fruits為 3。fruits現在指向這個新數組,具有 4 個值:

fruits = {"banana", "mango", "tomato", "papaya"}

newFruits仍然指向舊fruits數組,并包含 2 個元素。


查看完整回答
反對 回復 2022-10-17
  • 1 回答
  • 0 關注
  • 104 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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