通過切片創建新的切片
切片之所以被稱為切片,是因為創建一個新的切片,也就是把底層數組切出一部分。通過切片創建新切片的語法如下:
slice[i:j]
slice[i:j:k]
其中 i 表示從 slice 的第幾個元素開始切,j 控制切片的長度(j-i),k 控制切片的容量(k-i),如果沒有給定 k,則表示切到底層數組的最尾部。下面是幾種常見的簡寫形式:
slice[i:] // 從 i 切到最尾部
slice[:j] // 從最開頭切到 j(不包含 j)
slice[:] // 從頭切到尾,等價于復制整個 slice
讓我們通過下面的例子來理解通過切片創建新的切片的本質:
// 創建一個整型切片
// 其長度和容量都是 5 個元素
num := []int{1, 2, 3, 4, 5}
// 創建一個新切片
// 其長度為 2 個元素,容量為 4 個元素
myNum := slice[1:3]
執行上面的代碼后,我們有了兩個切片,它們共享同一段底層數組,但通過不同的切片會看到底層數組的不同部分:
注意:截取新切片時的原則是 "左含右不含"。所以 myNum 是從 num 的 index=1 處開始截取,截取到 index=3 的前一個元素,也就是不包index=3 這個元素。
所以,新的 myNum 是由 num 中的第2個元素、第3個元素組成的新的切片構,長度為 2,容量為 4。切片 num 能夠看到底層數組全部 5 個元素的容量,而 myNum 能看到的底層數組的容量只有 4 個元素。num 無法訪問到底層數組的第一個元素。所以,對 myNum 來說,那個元素就是不存在的。
-
數據結構
+關注
關注
3文章
573瀏覽量
40329 -
數組
+關注
關注
1文章
418瀏覽量
26113 -
切片
+關注
關注
1文章
23瀏覽量
8499
發布評論請先 登錄
相關推薦
Mapr報告的切片多于設備中存在的切片
如何通過report_utiliztion獲得切片比率?
怎么獲得不同FPGA系列的等效切片計數
如何使用DSP切片設計?
什么是網絡切片技術_網絡切片技術的應用

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

網絡切片的分類 網絡切片粒度如何選擇
5G 網絡切片之OTN切片和FlexE切片區別
如何實現端到端網絡切片?

數組中如何增加切片的容量

評論