通過(guò)切片創(chuàng)建新的切片
切片之所以被稱為切片,是因?yàn)閯?chuàng)建一個(gè)新的切片,也就是把底層數(shù)組切出一部分。通過(guò)切片創(chuàng)建新切片的語(yǔ)法如下:
slice[i:j]
slice[i:j:k]
其中 i 表示從 slice 的第幾個(gè)元素開(kāi)始切,j 控制切片的長(zhǎng)度(j-i),k 控制切片的容量(k-i),如果沒(méi)有給定 k,則表示切到底層數(shù)組的最尾部。下面是幾種常見(jiàn)的簡(jiǎn)寫形式:
slice[i:] // 從 i 切到最尾部
slice[:j] // 從最開(kāi)頭切到 j(不包含 j)
slice[:] // 從頭切到尾,等價(jià)于復(fù)制整個(gè) slice
讓我們通過(guò)下面的例子來(lái)理解通過(guò)切片創(chuàng)建新的切片的本質(zhì):
// 創(chuàng)建一個(gè)整型切片
// 其長(zhǎng)度和容量都是 5 個(gè)元素
num := []int{1, 2, 3, 4, 5}
// 創(chuàng)建一個(gè)新切片
// 其長(zhǎng)度為 2 個(gè)元素,容量為 4 個(gè)元素
myNum := slice[1:3]
執(zhí)行上面的代碼后,我們有了兩個(gè)切片,它們共享同一段底層數(shù)組,但通過(guò)不同的切片會(huì)看到底層數(shù)組的不同部分:
注意:截取新切片時(shí)的原則是 "左含右不含"。所以 myNum 是從 num 的 index=1 處開(kāi)始截取,截取到 index=3 的前一個(gè)元素,也就是不包index=3 這個(gè)元素。
所以,新的 myNum 是由 num 中的第2個(gè)元素、第3個(gè)元素組成的新的切片構(gòu),長(zhǎng)度為 2,容量為 4。切片 num 能夠看到底層數(shù)組全部 5 個(gè)元素的容量,而 myNum 能看到的底層數(shù)組的容量只有 4 個(gè)元素。num 無(wú)法訪問(wèn)到底層數(shù)組的第一個(gè)元素。所以,對(duì) myNum 來(lái)說(shuō),那個(gè)元素就是不存在的。
-
數(shù)據(jù)結(jié)構(gòu)
+關(guān)注
關(guān)注
3文章
573瀏覽量
40623 -
數(shù)組
+關(guān)注
關(guān)注
1文章
419瀏覽量
26393 -
切片
+關(guān)注
關(guān)注
1文章
23瀏覽量
8547
發(fā)布評(píng)論請(qǐng)先 登錄
Mapr報(bào)告的切片多于設(shè)備中存在的切片
如何通過(guò)report_utiliztion獲得切片比率?
請(qǐng)問(wèn)BGA封裝如何切片?
如何使用DSP切片設(shè)計(jì)?
什么是網(wǎng)絡(luò)切片技術(shù)_網(wǎng)絡(luò)切片技術(shù)的應(yīng)用

新型高端電容切片制樣方式:氬離子研磨拋光/離子研磨CP

網(wǎng)絡(luò)切片的分類 網(wǎng)絡(luò)切片粒度如何選擇
5G 網(wǎng)絡(luò)切片之OTN切片和FlexE切片區(qū)別
如何實(shí)現(xiàn)端到端網(wǎng)絡(luò)切片?

Go切片的內(nèi)部實(shí)現(xiàn)

golan共享底層數(shù)組的切片

數(shù)組中如何增加切片的容量

什么是5G切片技術(shù),如何完成端到端的網(wǎng)絡(luò)切片

評(píng)論