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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Go 中的函數(shù)返回一個(gè)新切片還是指向第一個(gè)切片的底層數(shù)組的切片?

Go 中的函數(shù)返回一個(gè)新切片還是指向第一個(gè)切片的底層數(shù)組的切片?

Go
哆啦的時(shí)光機(jī) 2023-07-10 16:36:54
如果可能的話,我正在嘗試使我的代碼更具性能,節(jié)省內(nèi)存我做了一些研究,但找不到關(guān)于這個(gè)具體案例的任何信息。func createSlice() []int {    return s[]int{1,2,3}}func main() {    s2 := createSlice()}s2 是一個(gè)擁有自己底層數(shù)組的全新切片,還是指向 s 底層數(shù)組的切片?
查看完整描述

1 回答

?
慕田峪9158850

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超7個(gè)贊

你必須了解 Go Slices 的 header。那么,你自己就能得到答案。

通過(guò)檢查reflect.SliceHeader類型來(lái)查看切片標(biāo)頭中的內(nèi)容:

type SliceHeader struct {

? ? Data uintptr

? ? Len? int

? ? Cap? int

}

實(shí)際上,切片值是一個(gè)header,包含支持?jǐn)?shù)組以及長(zhǎng)度和容量。它包含一個(gè)指向?qū)嶋H存儲(chǔ)元素的數(shù)組的指針。切片值不包含元素(與數(shù)組不同)。


因此,當(dāng)傳遞或返回切片時(shí),將從該標(biāo)頭傳遞或返回一個(gè)副本以及指針。該指針指向同一個(gè)支持的數(shù)組。因此,如果您修改切片的元素,它也會(huì)修改支持的數(shù)組,因此所有切片(共享相同的支持?jǐn)?shù)組)也會(huì)得到更改。


因此,當(dāng)您將切片傳遞給函數(shù)時(shí),將從該標(biāo)頭創(chuàng)建一個(gè)副本,包括指針,該指針將指向相同的后備數(shù)組。修改切片的元素意味著修改后備數(shù)組的元素,因此共享相同后備數(shù)組的所有切片都將“觀察”更改。


查看完整回答
反對(duì) 回復(fù) 2023-07-10
  • 1 回答
  • 0 關(guān)注
  • 116 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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