91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

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

麥辣雞腿堡 ? 來源:盼盼編程 ? 作者:盼盼編程 ? 2023-10-09 09:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

切片

Go中提供了一種靈活,功能強悍的內(nèi)置類型Slices切片(“動態(tài)數(shù)組"),與數(shù)組相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。

切片中有兩個概念:一是len長度,二是cap容量,長度是指已經(jīng)被賦過值的最大下標+1,可通過內(nèi)置函數(shù)len()獲得。

容量是指切片目前可容納的最多元素個數(shù),可通過內(nèi)置函數(shù)cap()獲得。切片是引用類型,因此在當傳遞切片時將引用同一指針,修改值將會影響其他的對象。

s := []int {1,2,3 }            //直接初始化切片

s := arr[:]                    //用數(shù)組初始化切片

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的操作會導致重新分配內(nèi)存,可能導致巨大的內(nèi)存分配和復制數(shù)據(jù)代價。

a = append([]int{0}, a...) 切片頭部添加元素。在開頭一般都會導致內(nèi)存的重新分配,而且會導致已有的元素全部復制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]

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

切片是一個很小的對象,它對底層的數(shù)組(內(nèi)部是通過數(shù)組保存數(shù)據(jù)的)進行了抽象,并提供相關的操作方法。

切片是一個有三個字段的數(shù)據(jù)結構,這些數(shù)據(jù)結構包含 Golang 需要操作底層數(shù)組的元數(shù)據(jù):

圖片

這 3 個字段分別是指向底層數(shù)組的指針、切片訪問的元素的個數(shù)(即長度)和切片允許增長到的元素個數(shù)(即容量)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)結構

    關注

    3

    文章

    573

    瀏覽量

    41584
  • 數(shù)組
    +關注

    關注

    1

    文章

    420

    瀏覽量

    27351
  • 切片
    +關注

    關注

    1

    文章

    23

    瀏覽量

    8625
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    #硬聲創(chuàng)作季 Go核心編程_使用切片的區(qū)別分析

    編程語言go語言
    Mr_haohao
    發(fā)布于 :2022年09月11日 18:05:54

    請問BGA封裝如何切片?

    請問BGA封裝如何切片?是帶芯片一起切片用顯微鏡觀察錫球情況嗎?是否有自動切片,精度如何?有看到板廠給的異常板切片報告說手工切片具有不確定性
    發(fā)表于 12-04 22:06

    如何實現(xiàn)一個使用V5上至少80%可用切片的設計

    你好,我必須實現(xiàn)一個使用V5上至少80%可用切片的設計。實現(xiàn)它的最佳方法是什么?是否有可用的示例設計使用80%或更多的邏輯?切片數(shù)量切片LU
    發(fā)表于 06-17 14:22

    芯片漏電點FIB切片分析

    失效分析,很多時候都需要做FIB-SEM測試,相信各位電子行業(yè)的朋友并不陌生, 大家都知道用聚焦離子束FIB切片芯片,解剖芯片內(nèi)部結構 查找芯片失效點分析,再做進一步分析。今天,邵工給大家分享一下
    發(fā)表于 08-05 12:11

    PCB切片的分類及作用介紹

    切片分析主要用于檢查PCB內(nèi)部走線厚度、層數(shù),通孔孔徑大小,通孔質(zhì)量觀察,用于檢查PCBA焊點內(nèi)部空洞,界面結合狀況,潤濕質(zhì)量評價等等。切片分析是進行PCB/PCBA失效分析的重要技術
    的頭像 發(fā)表于 05-17 14:53 ?1.2w次閱讀

    dubbo-go 中的 TPS Limit 設計與實現(xiàn)

    則是 Dubbo 的 Go 語言實現(xiàn)。 最近在 dubbo-go 的 todo list 上發(fā)現(xiàn),它還沒有實現(xiàn) TPS Limit 的模塊,于是就抽空
    發(fā)表于 03-17 15:27 ?973次閱讀

    中國移完成了DNN在內(nèi)的完整切片以及多種智能終端切片設計實現(xiàn)方案

    切片白皮書》。白皮書發(fā)布旨在匯聚產(chǎn)業(yè)各方資源,共商提速5G切片端到端商用推進計劃,早日實現(xiàn)5G切片規(guī)模商用,最終實現(xiàn)5G產(chǎn)業(yè)與個人消費領域、
    的頭像 發(fā)表于 10-16 10:27 ?4583次閱讀

    網(wǎng)絡切片的分類 網(wǎng)絡切片粒度如何選擇

    網(wǎng)絡切片是一種按需組網(wǎng)的方式,可以讓運營商在統(tǒng)一的基礎設施上分離出多個虛擬的端到端網(wǎng)絡,每個網(wǎng)絡切片從無線接入網(wǎng)承載網(wǎng)再到核心網(wǎng)上進行邏輯隔離,以適配各種各樣類型的應用。 網(wǎng)絡切片的分類 1、獨立
    的頭像 發(fā)表于 09-03 17:01 ?4494次閱讀

    PCB電路板切片的分析

    目的:? 電路板品質(zhì)的好壞、問題的發(fā)生與解決、制程改進的評估,在都需要切片做為客觀檢查、研究與判斷的根據(jù)。切片質(zhì)量的好壞,對結果的判定影響很大。? 切片分析主要用于檢查PCB內(nèi)部走線厚
    發(fā)表于 10-19 15:28 ?1.2w次閱讀
    PCB電路板<b class='flag-5'>切片</b>的分析

    Go并發(fā)模型的實現(xiàn)原理

    Go語言是為并發(fā)而生的語言,Go語言是為數(shù)不多的在語言層面實現(xiàn)并發(fā)的語言;也正是Go語言的并發(fā)特性,吸引了全球無數(shù)的開發(fā)者。
    的頭像 發(fā)表于 04-15 08:49 ?2162次閱讀

    朋也社區(qū)Go版本Go實現(xiàn)的社區(qū)系統(tǒng)

    ./oschina_soft/pybbs-go.zip
    發(fā)表于 06-10 14:32 ?0次下載
    朋也社區(qū)<b class='flag-5'>Go</b>版本<b class='flag-5'>Go</b><b class='flag-5'>實現(xiàn)</b>的社區(qū)系統(tǒng)

    5G 網(wǎng)絡切片之OTN切片和FlexE切片區(qū)別

    5G 網(wǎng)絡切片本質(zhì)上是一個 E2E 概念,將用戶設備連接到租戶特定的應用程序。E2E 網(wǎng)絡切片由RAN 切片、核心切片和傳輸切片組成。每個網(wǎng)
    發(fā)表于 01-04 11:56 ?5925次閱讀

    如何實現(xiàn)端到端網(wǎng)絡切片?

    3GPP將網(wǎng)絡切片定義為5G 網(wǎng)絡的主要功能之一,網(wǎng)絡切片可看作是動態(tài)創(chuàng)建的邏輯端到端網(wǎng)絡。在深入研究網(wǎng)絡切片的概念之前,我們先簡單回顧下 5G 的三大應用場景。
    發(fā)表于 06-15 17:56 ?2236次閱讀
    如何<b class='flag-5'>實現(xiàn)</b>端到端網(wǎng)絡<b class='flag-5'>切片</b>?

    golang通過切片創(chuàng)建新的切片

    通過切片創(chuàng)建新的切片 切片之所以被稱為切片,是因為創(chuàng)建一個新的切片,也就是把底層數(shù)組切出一部分。通過切片
    的頭像 發(fā)表于 10-09 09:48 ?1318次閱讀
    golang通過<b class='flag-5'>切片</b>創(chuàng)建新的<b class='flag-5'>切片</b>

    什么是半導體芯片的失效切片分析?

    芯片切片分析技術芯片切片分析是一種在半導體、電子顯微學和材料科學等領域廣泛應用的技術。通過將芯片切成薄片,研究人員可以直接觀察芯片內(nèi)部的微觀結構,如晶體管、電路布線等,從而深入研究芯片的內(nèi)部
    的頭像 發(fā)表于 12-10 10:43 ?1597次閱讀
    什么是半導體芯片的失效<b class='flag-5'>切片</b>分析?