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

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

底層數(shù)組在 Golang 的“切片”中的行為

底層數(shù)組在 Golang 的“切片”中的行為

Go
月關(guān)寶盒 2022-08-30 15:04:11
我對(duì)切片中的數(shù)組感到非常困惑。代碼發(fā)布在下面。我理解 test() 從 main() 獲取 arr 的副本,而 test() 中的 'append' 不會(huì)分配新數(shù)組,因?yàn)?cap > len。但是,測(cè)試切片 arr[] 和主切片 arr[] 中的基礎(chǔ)數(shù)組似乎不同,因?yàn)樗鼈兊牡刂凡煌A硪环矫?,test() 中的 'append' 操作確實(shí)修改了 main() 中的基礎(chǔ)數(shù)組,因?yàn)楫?dāng)打印主切片的基礎(chǔ)數(shù)組時(shí),會(huì)出現(xiàn)一個(gè)新的 '1'。此外,test() 能夠設(shè)置 arr[0] = 10,這在 main() 中是可見(jiàn)的。這是如何發(fā)生的?切片中數(shù)組的地址取自這篇文章。func test(arr []int) {    arr[0] = 10    fmt.Printf("test slice - %p \n", &arr) //    hdr := (*reflect.SliceHeader)(unsafe.Pointer(&arr))    data := *(*[10]int)(unsafe.Pointer(hdr.Data))    fmt.Printf("test - %p \n", &data)    arr = append(arr, 1)    fmt.Printf("test slice = %p \n", &arr) //    hdr = (*reflect.SliceHeader)(unsafe.Pointer(&arr))    data = *(*[10]int)(unsafe.Pointer(hdr.Data))    fmt.Printf("test = %p \n", &data)}func main() {    var arr []int = make([]int, 4, 10)    hdr := (*reflect.SliceHeader)(unsafe.Pointer(&arr))    data := *(*[10]int)(unsafe.Pointer(hdr.Data))    fmt.Printf("main - %p \n", &data)    test(arr)    hdr = (*reflect.SliceHeader)(unsafe.Pointer(&arr))    data = *(*[10]int)(unsafe.Pointer(hdr.Data))    fmt.Printf("main = %p \n", &data)    fmt.Println("main data ", data)}輸出:main - 0xc00009e050 test slice - 0xc0000a6000 test - 0xc00009e0a0 test slice = 0xc0000a6000 test = 0xc00009e0a0 main = 0xc00009e050 main data  [10 0 0 0 1 0 0 0 0 0]
查看完整描述

1 回答

?
Qyouu

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

此操作:

    data := *(*[10]int)(unsafe.Pointer(hdr.Data))

將數(shù)組復(fù)制到 中。此處為新數(shù)組,而不是切片的支持?jǐn)?shù)組。[10]intdatadata


查看完整回答
反對(duì) 回復(fù) 2022-08-30
  • 1 回答
  • 0 關(guān)注
  • 110 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(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)