第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

為什么GO中切片的內(nèi)容未更改?

為什么GO中切片的內(nèi)容未更改?

Go
慕村225694 2021-05-14 15:18:12
我認(rèn)為在GO語言中,切片是通過引用傳遞的。但是,為什么下面的代碼不更改切片c的內(nèi)容?我想念什么嗎?謝謝你。package mainimport (    "fmt")func call(c []int) {    c = append(c, 1)    fmt.Println(c)}func main() {    c := make([]int, 1, 5)    fmt.Println(c)    call(c)    fmt.Println(c)}打印的結(jié)果是:[0] [0 1] [0]在我期待的時候[0] [0 1] [0 1]
查看完整描述

2 回答

?
躍然一笑

TA貢獻(xiàn)1826條經(jīng)驗 獲得超6個贊

切片的長度保留在切片標(biāo)頭中,該標(biāo)頭未通過引用傳遞。您可以將切片視為包含指向數(shù)組,長度和容量的指針的結(jié)構(gòu)。

當(dāng)您追加到切片時,您修改了數(shù)據(jù)數(shù)組中的索引1,然后增加了切片標(biāo)頭中的長度。當(dāng)您返回時,c在main函數(shù)中的長度為1,因此打印了相同的數(shù)據(jù)。

切片以這種方式工作的原因是,您可以讓多個切片指向相同的數(shù)據(jù)。例如:

x := []int{1,2,3}
y := x[:2] // [1 2]
z := x[1:] // [2 3]

所有這三個切片都指向同一基礎(chǔ)數(shù)組中的重疊數(shù)據(jù)。


查看完整回答
反對 回復(fù) 2021-05-17
?
守著一只汪

TA貢獻(xiàn)1872條經(jīng)驗 獲得超4個贊

Go總是通過價值傳遞。某些類型是引用類型,例如指針,地圖,通道;或部分引用類型,例如切片(由對底層數(shù)組的引用以及長度和容量的值組成)。但是,不管類型如何,所有內(nèi)容都是按值傳遞的。因此,分配給局部變量永遠(yuǎn)不會影響任何外部變量。


查看完整回答
反對 回復(fù) 2021-05-17
  • 2 回答
  • 0 關(guān)注
  • 331 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號