一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

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

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

掃碼添加小助手

加入工程師交流群

切片擴(kuò)容

相對(duì)于數(shù)組而言,使用切片的一個(gè)好處是:可以按需增加切片的容量。

Golang 內(nèi)置的 append() 函數(shù)會(huì)處理增加長(zhǎng)度時(shí)的所有操作細(xì)節(jié)。要使用 append() 函數(shù),需要一個(gè)被操作的切片和一個(gè)要追加的值,當(dāng) append() 函數(shù)返回時(shí),會(huì)返回一個(gè)包含修改結(jié)果的新切片。

函數(shù) append() 總是會(huì)增加新切片的長(zhǎng)度,而容量有可能會(huì)改變,也可能不會(huì)改變,這取決于被操作的切片的可用容量。

num := []int{1, 2, 3, 4, 5}
// 創(chuàng)建新的切片,其長(zhǎng)度為 2 個(gè)元素,容量為 4 個(gè)元素

myNum := num[1:3]
// 使用原有的容量來(lái)分配一個(gè)新元素
// 將新元素賦值為 60
myNum = append(myNum, 60)

執(zhí)行上面的代碼后的底層數(shù)據(jù)結(jié)構(gòu)如下圖所示:

圖片

此時(shí)因?yàn)?myNum 在底層數(shù)組里還有額外的容量可用,append() 函數(shù)將可用的元素合并入切片的長(zhǎng)度,并對(duì)其進(jìn)行賦值。

由于和原始的切片共享同一個(gè)底層數(shù)組,myNum 中索引為 3 的元素的值也被改動(dòng)了。

如果切片的底層數(shù)組沒(méi)有足夠的可用容量,append() 函數(shù)會(huì)創(chuàng)建一個(gè)新的底層數(shù)組,將被引用的現(xiàn)有的值復(fù)制到新數(shù)組里,再追加新的值,此時(shí) append 操作同時(shí)增加切片的長(zhǎng)度和容量:

// 創(chuàng)建一個(gè)長(zhǎng)度和容量都是 4 的整型切片
num := []int{1, 2, 3, 4}

// 向切片追加一個(gè)新元素
// 將新元素賦值為 5
myNum := append(num, 5)

當(dāng)這個(gè) append 操作完成后,newSlice 擁有一個(gè)全新的底層數(shù)組,這個(gè)數(shù)組的容量是原來(lái)的兩倍:

圖片

函數(shù) append() 會(huì)智能地處理底層數(shù)組的容量增長(zhǎng)。

在切片的容量小于 1000 個(gè)元素時(shí),總是會(huì)成倍地增加容量。一旦元素個(gè)數(shù)超過(guò) 1000,容量的增長(zhǎng)因子會(huì)設(shè)為 1.25,也就是會(huì)每次增加 25%的容量(隨著語(yǔ)言的演化,這種增長(zhǎng)算法可能會(huì)有所改變)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4381

    瀏覽量

    64883
  • 數(shù)據(jù)結(jié)構(gòu)

    關(guān)注

    3

    文章

    573

    瀏覽量

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

    關(guān)注

    1

    文章

    420

    瀏覽量

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

    關(guān)注

    1

    文章

    23

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    關(guān)于大容量數(shù)組某個(gè)元素的定位問(wèn)題

    請(qǐng)教下,一個(gè)采集卡以400k的速率采集數(shù)據(jù)。在采集過(guò)程數(shù)組如何獲得第600k、第800k個(gè)點(diǎn)呢,我嘗試用索引數(shù)組配合case結(jié)構(gòu),但發(fā)現(xiàn)索引位置變化太慢請(qǐng)問(wèn)大家有辦法嗎?
    發(fā)表于 06-17 23:49

    labview如何創(chuàng)造一個(gè)不斷增加數(shù)組

    while循環(huán)設(shè)置為“真時(shí)停止”,為什么我按停止后,數(shù)組才會(huì)不斷增加而,而打false則數(shù)組增加?不是應(yīng)該繼續(xù)的時(shí)候才執(zhí)行while的程
    發(fā)表于 01-17 16:56

    數(shù)組大小的增加 怎么拉動(dòng)

    如圖 有時(shí)候數(shù)組增加了一個(gè)之后 在怎么拉動(dòng)數(shù)組的控件都只是改變控件外形大小,那個(gè)增加輸入的小框框就是調(diào)不出來(lái)
    發(fā)表于 07-11 15:58

    數(shù)組在內(nèi)存的存儲(chǔ)解析

    數(shù)組容量是固定的,只能一次獲取或設(shè)置一個(gè)元素的值,而ArrayList或List的容量可根據(jù)需要自動(dòng)擴(kuò)充、修改、刪除或插入數(shù)據(jù)。數(shù)組可以具有多個(gè)維度,而 ArrayList或 Lis
    發(fā)表于 01-14 22:22 ?6345次閱讀

    java數(shù)組的三種定義方式_java數(shù)組的定義及使用方法(推薦)

    java,數(shù)組是一種很常用的工具,本文將介紹來(lái)java數(shù)組的三種定義方式以及java數(shù)組
    發(fā)表于 01-29 09:53 ?3.3w次閱讀

    SystemVerilog數(shù)組的賦值、索引和切片

    數(shù)組可以作為參數(shù)傳遞給子程序,當(dāng)數(shù)組作為值傳遞給子程序時(shí),會(huì)將這個(gè)數(shù)組復(fù)制一份傳遞給子程序。
    的頭像 發(fā)表于 10-20 10:13 ?5914次閱讀

    增加Arduino引腳的電流容量

    電子發(fā)燒友網(wǎng)站提供《增加Arduino引腳的電流容量.zip》資料免費(fèi)下載
    發(fā)表于 12-16 10:16 ?0次下載
    <b class='flag-5'>增加</b>Arduino引腳的電流<b class='flag-5'>容量</b>

    帶你了解SystemVerilog的關(guān)聯(lián)數(shù)組

    在SystemVerilog,我們知道可以使用動(dòng)態(tài)數(shù)組實(shí)現(xiàn)數(shù)組元素個(gè)數(shù)的動(dòng)態(tài)分配,即隨用隨分
    的頭像 發(fā)表于 06-09 09:46 ?8349次閱讀
    帶你了解SystemVerilog<b class='flag-5'>中</b>的關(guān)聯(lián)<b class='flag-5'>數(shù)組</b>

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

    切片 Go中提供了一種靈活,功能強(qiáng)悍的內(nèi)置類(lèi)型Slices切片(“動(dòng)態(tài)數(shù)組"),與數(shù)組相比切片的長(zhǎng)度是不固定的,可以追加元素,在追加時(shí)可能使
    的頭像 發(fā)表于 10-09 09:43 ?772次閱讀
    Go<b class='flag-5'>切片</b>的內(nèi)部實(shí)現(xiàn)

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

    slice 的第幾個(gè)元素開(kāi)始切,j 控制切片的長(zhǎng)度(j-i),k 控制切片容量(k-i),如果沒(méi)有給定 k,則表示切到底層數(shù)組的最尾部。下面是幾種常見(jiàn)的簡(jiǎn)寫(xiě)形式: slice [i
    的頭像 發(fā)表于 10-09 09:48 ?945次閱讀
    golang通過(guò)<b class='flag-5'>切片</b>創(chuàng)建新的<b class='flag-5'>切片</b>

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

    nil 和空切片 有時(shí),程序可能需要聲明一個(gè)值為 nil 的切片(也稱(chēng)nil切片)。只要在聲明時(shí)不做任何初始化,就會(huì)創(chuàng)建一個(gè) nil 切片。 var num [] int 在 Gola
    的頭像 發(fā)表于 10-09 09:56 ?843次閱讀
    golan共享底層<b class='flag-5'>數(shù)組</b>的<b class='flag-5'>切片</b>

    js判斷是否在數(shù)組存在

    JavaScript 是一種用于客戶(hù)端和服務(wù)器端編程的腳本語(yǔ)言。它提供了許多內(nèi)置函數(shù)和方法,以便進(jìn)行數(shù)組操作。 在本文中,我們將學(xué)習(xí)如何使用 JavaScript 來(lái)判斷一個(gè)元素是否存在于數(shù)組
    的頭像 發(fā)表于 11-30 16:23 ?1580次閱讀

    labview怎么查數(shù)組相同元素的個(gè)數(shù)

    要查找LabVIEW數(shù)組相同元素的個(gè)數(shù),可以使用以下步驟: 創(chuàng)建一個(gè)包含要查找的數(shù)值的數(shù)組。這可以通過(guò)手動(dòng)輸入數(shù)組元素或從文件/其他數(shù)據(jù)
    的頭像 發(fā)表于 12-28 16:42 ?4999次閱讀

    PHP數(shù)組的使用方法!

    PHP數(shù)組的使用方法! PHP是一種廣泛使用的網(wǎng)絡(luò)編程語(yǔ)言,它的數(shù)組功能非常強(qiáng)大且靈活。數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),它允許我們?cè)趩蝹€(gè)變量存儲(chǔ)多個(gè)
    的頭像 發(fā)表于 01-12 15:11 ?809次閱讀

    數(shù)組和鏈表在內(nèi)存的區(qū)別 數(shù)組和鏈表的優(yōu)缺點(diǎn)

    數(shù)組和鏈表在內(nèi)存的區(qū)別 數(shù)組和鏈表的優(yōu)缺點(diǎn)? 數(shù)組和鏈表是常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),用于組織和存儲(chǔ)數(shù)據(jù)。它們?cè)趦?nèi)存的存儲(chǔ)方式以及優(yōu)缺點(diǎn)方面存在一些
    的頭像 發(fā)表于 02-21 11:30 ?1539次閱讀