99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

完善資料讓更多小伙伴認識你,還能領(lǐ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的操作會導(dǎo)致重新分配內(nèi)存,可能導(dǎo)致巨大的內(nèi)存分配和復(fù)制數(shù)據(jù)代價。

a = append([]int{0}, a...) 切片頭部添加元素。在開頭一般都會導(dǎo)致內(nèi)存的重新分配,而且會導(dǎo)致已有的元素全部復(fù)制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ù)的)進行了抽象,并提供相關(guān)的操作方法。

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

圖片

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

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

    關(guān)注

    3

    文章

    573

    瀏覽量

    40751
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    420

    瀏覽量

    26553
  • 切片
    +關(guān)注

    關(guān)注

    1

    文章

    23

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

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

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

    請問BGA封裝如何切片?

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

    怎么獲得不同F(xiàn)PGA系列的等效切片計數(shù)

    大家好,我在Artix-7設(shè)備上實現(xiàn)了一個圖像處理系統(tǒng)。我通過使用ISE工具生成的發(fā)布位置和路徑報告,根據(jù)占用的切片計算了設(shè)計的資源消耗?,F(xiàn)在我需要將我設(shè)計的資源消耗(占用切片)與其他一些設(shè)計進行
    發(fā)表于 04-29 13:40

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

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

    芯片漏電點FIB切片分析

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

    PCB切片的分類及作用介紹

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

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

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

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

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

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

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

    PCB電路板切片的分析

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

    朋也社區(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)絡(luò)切片之OTN切片和FlexE切片區(qū)別

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

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

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

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

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