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

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

slice2 := slice1 等于 GoLang 中的 slice2 := slice1[:]

slice2 := slice1 等于 GoLang 中的 slice2 := slice1[:]

Go
飲歌長(zhǎng)嘯 2023-05-15 09:50:33
下面兩行代碼在 Go 語(yǔ)言中做同樣的事情嗎?我想要做的是將一個(gè)切片復(fù)制到另一個(gè)切片中:slice1 := make([]int, 5)slice2 := slice1 #line1slice2 := slice1[:] #line2我運(yùn)行這段代碼來(lái)測(cè)試行為,但顯然它們都以相同的方式工作:func main() {    s1 := make([]int, 5, 5)    s1[2] = 33    fmt.Printf("s1: %v: address of slice %p\n", s1, &s1)    s2 := s1[:]    s2[1] = 5    fmt.Printf("s2: %v: address of slice %p\n", s2, &s2)    s3 := s1    s3[0] = 23    fmt.Printf("s3: %v: address of slice %p\n",s3, &s3)    fmt.Printf("s2: %v: address of slice %p\n", s2, &s2)    fmt.Printf("s1: %v: address of slice %p\n", s1, &s1)}輸出是:s1: [0 0 33 0 0]: address of slice 0x40c0e0s2: [0 5 33 0 0]: address of slice 0x40c100s3: [23 5 33 0 0]: address of slice 0x40c120s2: [23 5 33 0 0]: address of slice 0x40c100s1: [23 5 33 0 0]: address of slice 0x40c0e0因此,切片(s1、s2、s3)的內(nèi)存地址不同,但指向包含在其中的數(shù)組的指針指向相同的內(nèi)存地址。我想知道這兩種方式之間是否有什么變化,或者是否有某種約定說(shuō)明更好用。
查看完整描述

1 回答

?
紫衣仙女

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

結(jié)果是一樣的。

您沒(méi)有檢查的一件事是容量,這是切片的另一個(gè)屬性。因此,讓我們也檢查一下:

s?:=?make([]int,?2,?4)
s2?:=?s
s3?:=?s[:]

fmt.Println(len(s),?cap(s))
fmt.Println(len(s2),?cap(s2))
fmt.Println(len(s3),?cap(s3))

輸出(在Go Playground上嘗試):

2?4
2?4
2?4

slice 表達(dá)式?基本上s[:]意味著對(duì)切片進(jìn)行切片,并使用 0 作為下索引,作為len(s)上索引,cap(s)作為容量。所以結(jié)果將是一個(gè)與 相同的切片s

為了便于閱讀,只需復(fù)制 slice header:?s2 := s。

另請(qǐng)注意,如果snil,復(fù)制它和切片它也會(huì)產(chǎn)生nil切片:

var?s?[]ints2?:=?s
s3?:=?s[:]

fmt.Println(len(s),?cap(s),?s?==?nil)
fmt.Println(len(s2),?cap(s2),?s2?==?nil)
fmt.Println(len(s3),?cap(s3),?s3?==?nil)

上面的輸出是(在Go Playground上試試):

0?0?true
0?0?true
0?0?true

所以結(jié)果絕對(duì)沒(méi)有區(qū)別。編譯器實(shí)現(xiàn)可能會(huì)或可能不會(huì)模仿s2 := s您編寫時(shí)的語(yǔ)句s2 := s[:],因此后者可能會(huì)更慢。但同樣,沒(méi)有理由不簡(jiǎn)單地復(fù)制它。


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

添加回答

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