切片
Go中提供了一種靈活,功能強悍的內置類型Slices切片(“動態數組"),與數組相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。
切片中有兩個概念:一是len長度,二是cap容量,長度是指已經被賦過值的最大下標+1,可通過內置函數len()獲得。
容量是指切片目前可容納的最多元素個數,可通過內置函數cap()獲得。切片是引用類型,因此在當傳遞切片時將引用同一指針,修改值將會影響其他的對象。
s := []int {1,2,3 } //直接初始化切片
s := arr[:] //用數組初始化切片
s = make([]int, 3) //make初始化,有3個元素的切片, len和cap都為3
s = make([]int, 2, 3) //make初始化,有2個元素的切片, len為2, cap為3
a = append(a, 1) // 追加1個元素
a = append(a, 1, 2, 3) // 追加多個元素, 手寫解包方式
a = append(a, []int{1,2,3}...) // 追加一個切片, 切片需要解包
不過要注意的是,在容量不足的情況下,append的操作會導致重新分配內存,可能導致巨大的內存分配和復制數據代價。
a = append([]int{0}, a...) 切片頭部添加元素。在開頭一般都會導致內存的重新分配,而且會導致已有的元素全部復制1次。
因此,從切片的開頭添加元素的性能一般要比從尾部追加元素的性能差很多。
//切片是地址傳遞
func updateSlice(a []int) {
a[0] = 3
}
func main() {
//切片
var a = []int{1, 2, 3}
c := make([]int, 5)
copy(c, a)
updateSlice(c)
fmt.Println(c)
}
打印
[3 2 3 0 0]
切片的內部實現
切片是一個很小的對象,它對底層的數組(內部是通過數組保存數據的)進行了抽象,并提供相關的操作方法。
切片是一個有三個字段的數據結構,這些數據結構包含 Golang 需要操作底層數組的元數據:

這 3 個字段分別是指向底層數組的指針、切片訪問的元素的個數(即長度)和切片允許增長到的元素個數(即容量)。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
數據結構
+關注
關注
3文章
573瀏覽量
41587 -
數組
+關注
關注
1文章
420瀏覽量
27351 -
切片
+關注
關注
1文章
23瀏覽量
8625
發布評論請先 登錄
相關推薦
熱點推薦
如何實現一個使用V5上至少80%可用切片的設計
你好,我必須實現一個使用V5上至少80%可用切片的設計。實現它的最佳方法是什么?是否有可用的示例設計使用80%或更多的邏輯?切片數量切片LU
發表于 06-17 14:22
芯片漏電點FIB切片分析
失效分析,很多時候都需要做FIB-SEM測試,相信各位電子行業的朋友并不陌生, 大家都知道用聚焦離子束FIB切片芯片,解剖芯片內部結構 查找芯片失效點分析,再做進一步分析。今天,邵工給大家分享一下
發表于 08-05 12:11
PCB切片的分類及作用介紹
切片分析主要用于檢查PCB內部走線厚度、層數,通孔孔徑大小,通孔質量觀察,用于檢查PCBA焊點內部空洞,界面結合狀況,潤濕質量評價等等。切片分析是進行PCB/PCBA失效分析的重要技術
dubbo-go 中的 TPS Limit 設計與實現
則是 Dubbo 的 Go 語言實現。 最近在 dubbo-go 的 todo list 上發現,它還沒有實現 TPS Limit 的模塊,于是就抽空
發表于 03-17 15:27
?973次閱讀
中國移完成了DNN在內的完整切片以及多種智能終端切片設計實現方案
切片白皮書》。白皮書發布旨在匯聚產業各方資源,共商提速5G切片端到端商用推進計劃,早日實現5G切片規模商用,最終實現5G產業與個人消費領域、
網絡切片的分類 網絡切片粒度如何選擇
網絡切片是一種按需組網的方式,可以讓運營商在統一的基礎設施上分離出多個虛擬的端到端網絡,每個網絡切片從無線接入網承載網再到核心網上進行邏輯隔離,以適配各種各樣類型的應用。 網絡切片的分類 1、獨立
PCB電路板切片的分析
目的:? 電路板品質的好壞、問題的發生與解決、制程改進的評估,在都需要切片做為客觀檢查、研究與判斷的根據。切片質量的好壞,對結果的判定影響很大。? 切片分析主要用于檢查PCB內部走線厚
發表于 10-19 15:28
?1.2w次閱讀
5G 網絡切片之OTN切片和FlexE切片區別
5G 網絡切片本質上是一個 E2E 概念,將用戶設備連接到租戶特定的應用程序。E2E 網絡切片由RAN 切片、核心切片和傳輸切片組成。每個網
發表于 01-04 11:56
?5925次閱讀
如何實現端到端網絡切片?
3GPP將網絡切片定義為5G 網絡的主要功能之一,網絡切片可看作是動態創建的邏輯端到端網絡。在深入研究網絡切片的概念之前,我們先簡單回顧下 5G 的三大應用場景。
發表于 06-15 17:56
?2236次閱讀
什么是半導體芯片的失效切片分析?
芯片切片分析技術芯片切片分析是一種在半導體、電子顯微學和材料科學等領域廣泛應用的技術。通過將芯片切成薄片,研究人員可以直接觀察芯片內部的微觀結構,如晶體管、電路布線等,從而深入研究芯片的內部
Go切片的內部實現
評論