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

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

去切片覆蓋

去切片覆蓋

Go
皈依舞 2022-11-23 19:18:00
這是源代碼:package mainfunc main() {    testSlice()}func testSlice() {    slice := make([]int, 0)    //slice = append(slice, 1)  ①    //slice = append(slice, 1, 2)  ②    //slice = append(slice, 1, 2, 3)  ③    //slice = append(slice, 1, 2, 3, 4)  ④    slice = append(slice, 1, 2, 3, 4, 5)  ⑤    //slice = append(slice, 1, 2, 3, 4, 5, 6)  ⑥    slice2 := append(slice, 1)    slice3 := append(slice, 2)    for _, i := range slice2 {        print(i)    }    println()    for _, i := range slice3 {        print(i)    }}預(yù)期輸出:123451123452實(shí)際輸出:123452123452除⑤外,①~⑥的輸出符合預(yù)期。但為什么⑤會(huì)slice3覆蓋slice2?原因與指針或切片調(diào)整大小有關(guān)嗎?
查看完整描述

1 回答

?
蝴蝶刀刀

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

在閱讀我的答案的其余部分之前,請(qǐng)查看這個(gè) SO 答案,以獲得對(duì)切片實(shí)際是什么的真正有用的解釋。通過(guò)打印出實(shí)際的切片標(biāo)題可能更容易理解發(fā)生了什么。請(qǐng)參閱以下示例代碼(并轉(zhuǎn)到 playground):

package main


import (

    "fmt"

    "reflect"

    "unsafe"

)


func main() {

    testSlice()

}


func testSlice() {

    slice := make([]int, 0)

    slice = append(slice, 1, 2, 3, 4, 5)


    fmt.Printf("%+v\n", (*reflect.SliceHeader)(unsafe.Pointer(&slice)))

    slice2 := append(slice, 1)

    fmt.Printf("%+v\n", (*reflect.SliceHeader)(unsafe.Pointer(&slice2)))

    slice3 := append(slice, 2)

    fmt.Printf("%+v\n", (*reflect.SliceHeader)(unsafe.Pointer(&slice3)))


    for _, i := range slice2 {

        print(i)

    }

    println()

    for _, i := range slice3 {

        print(i)

    }

}


這將打印如下內(nèi)容:


&{Data:824634441776 Len:5 Cap:6}

&{Data:824634441776 Len:6 Cap:6}

&{Data:824634441776 Len:6 Cap:6}

這表明所有變量slice、slice2和slice3都指向相同的數(shù)據(jù)(Data這是指向切片第一個(gè)元素的指針)但切片標(biāo)頭本身不同。當(dāng)您執(zhí)行appends 時(shí),您正在修改所有變量共享的基礎(chǔ)切片,并將新的切片標(biāo)頭存儲(chǔ)到新變量中。slice2和的切片標(biāo)頭slice3正在查看相同的數(shù)據(jù)切片,因此當(dāng)您出現(xiàn)并執(zhí)行追加時(shí)slice3,您將覆蓋所有變量共享的基礎(chǔ)切片中的第 6 個(gè)元素。


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

添加回答

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