欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

golang切片擴(kuò)容規(guī)則實(shí)現(xiàn)

 更新時(shí)間:2021年03月03日 09:36:58   作者:weixin_37509194  
這篇文章主要介紹了golang切片擴(kuò)容規(guī)則實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

golang擴(kuò)容規(guī)則

在這里插入圖片描述

舉個(gè)例子來(lái)演示下

package main

import (
"fmt"
)
func main() {
arr1 := [4]int{1,2,3,4}
//此時(shí)slice1為[1,2,3] 長(zhǎng)度為3,容量為4
slice1 :=arr1[:3]
fmt.Println(slice1,len(slice1),cap(slice1))
slice1 = append(slice1,5000,6000)
fmt.Println(slice1,len(slice1),cap(slice1))
}

此時(shí)容量由原來(lái)的4擴(kuò)容到了8,你以為就是簡(jiǎn)單的2倍嗎?那你可真理解錯(cuò)了,你得知道他背后擴(kuò)容的原因,我來(lái)給你計(jì)算下
1、原來(lái)的容量為4,追加了5000,6000后變?yōu)榱?個(gè),此時(shí)4*2>6,滿足了腦圖中的第二種情況,并且元素個(gè)數(shù)小于1024,先擴(kuò)容2倍
2、由于64位操作系統(tǒng)下,一個(gè)int類型占8個(gè)字節(jié),所以8*8=64
3、此時(shí)匹配操作系統(tǒng)預(yù)先分配好的內(nèi)存規(guī)格,規(guī)則正好匹配了64,所以用64/8=8,所以擴(kuò)容后的容量為8

在這里插入圖片描述

咱們?cè)賮?lái)一個(gè)例子看你是否真正理解了他的擴(kuò)容規(guī)則, 這個(gè)例子最后容量為10

package main

import (
	"fmt"
)
func main() {
	arr1 := [4]int{1,2,3,4}
	//此時(shí)slice1為[1,2,3] 長(zhǎng)度為3,容量為4
	slice1 :=arr1[:3]
	fmt.Println(slice1,len(slice1),cap(slice1))
	slice1 = append(slice1,5000,6000,7000,8000,9000,10000)
	fmt.Println(slice1,len(slice1),cap(slice1))
}

在這里插入圖片描述

···
慌不慌,你是不懂了嗎?不懂我給你好好算一下
1⃣️原來(lái)容量是4,此時(shí)追加了5個(gè)元素,變?yōu)榱?
2⃣️4*2<9,滿足腦圖中的第一個(gè)條件,由于int類型在64位操作系統(tǒng)下占用8個(gè)字節(jié),所以用9*8=72
3⃣️所以此時(shí)需要匹配的內(nèi)存規(guī)格為80
4⃣️用80/8=10,所以此時(shí)容量為10

···
元素個(gè)數(shù)大于1024的我就不給你展示了,原理都是一樣的,認(rèn)認(rèn)真真看完之后擴(kuò)容規(guī)則肯定就懂了,不用再看其他的了

總結(jié):切片擴(kuò)容規(guī)則和你追加的元素個(gè)數(shù)有關(guān)
切片擴(kuò)容和你匹配的操作系統(tǒng)分配的內(nèi)存規(guī)格有關(guān)
和你定義的切片類型有關(guān)

到此這篇關(guān)于golang切片擴(kuò)容規(guī)則實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)golang切片擴(kuò)容 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang錯(cuò)誤處理:異常捕捉和恢復(fù)機(jī)制

    Golang錯(cuò)誤處理:異常捕捉和恢復(fù)機(jī)制

    Golang中,異常處理是通過(guò) defer + panic + recover 的方式來(lái)實(shí)現(xiàn)的,使用 defer 可以將清理操作注冊(cè)到函數(shù)執(zhí)行完畢后執(zhí)行,而 panic 和 recover 可以用于處理異常,通過(guò)組合使用這些功能,可以實(shí)現(xiàn)更加健壯的程序
    2024-01-01
  • go語(yǔ)言心跳超時(shí)的實(shí)現(xiàn)示例

    go語(yǔ)言心跳超時(shí)的實(shí)現(xiàn)示例

    本文主要介紹了go語(yǔ)言心跳超時(shí)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Mac OS系統(tǒng)安裝golang教程

    Mac OS系統(tǒng)安裝golang教程

    這篇文章主要介紹了Mac OS系統(tǒng)安裝golang教程,本文還同時(shí)介紹了Sublime Text開(kāi)發(fā)工具的配置,需要的朋友可以參考下
    2015-01-01
  • Golang中堆排序的實(shí)現(xiàn)

    Golang中堆排序的實(shí)現(xiàn)

    堆是一棵基于數(shù)組實(shí)現(xiàn)的特殊的完全二叉樹(shù),本文主要介紹了Golang中堆排序的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 深入了解Golang中Slice切片的使用

    深入了解Golang中Slice切片的使用

    本文主要為大家詳細(xì)介紹了Golang中Slice切片的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2023-02-02
  • Golang中的深拷貝與淺拷貝使用

    Golang中的深拷貝與淺拷貝使用

    本文主要介紹了Golang中的深拷貝與淺拷貝使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 在?Golang?中使用?Cobra?創(chuàng)建?CLI?應(yīng)用

    在?Golang?中使用?Cobra?創(chuàng)建?CLI?應(yīng)用

    這篇文章主要介紹了在?Golang?中使用?Cobra?創(chuàng)建?CLI?應(yīng)用,來(lái)看下?Cobra?的使用,這里我們使用的?go1.13.3?版本,使用?Go?Modules?來(lái)進(jìn)行包管理,需要的朋友可以參考下
    2022-01-01
  • 一文帶你了解Go中的內(nèi)存對(duì)齊

    一文帶你了解Go中的內(nèi)存對(duì)齊

    一旦涉及到較為底層的編程,特別是與硬件交互,內(nèi)存對(duì)齊是一個(gè)必修的課題,所以這篇文章小編就想來(lái)和大家聊一聊Go語(yǔ)言中的內(nèi)存對(duì)齊,希望對(duì)大家有所幫助
    2023-10-10
  • GoLang strings.Builder底層實(shí)現(xiàn)方法詳解

    GoLang strings.Builder底層實(shí)現(xiàn)方法詳解

    自從學(xué)習(xí)go一個(gè)月以來(lái),我多少使用了一下strings.Builder,略有心得。你也許知道它,特別是你了解bytes.Buffer的話。所以我在此分享一下我的心得,并希望能對(duì)你有所幫助
    2022-10-10
  • Golang配置管理庫(kù)?Viper的教程詳解

    Golang配置管理庫(kù)?Viper的教程詳解

    這篇文章主要介紹了Golang?配置管理庫(kù)?Viper,使用?viper?能夠很好的去管理你的配置文件信息,比如數(shù)據(jù)庫(kù)的賬號(hào)密碼,服務(wù)器監(jiān)聽(tīng)的端口,你可以通過(guò)更改配置文件去更改這些內(nèi)容,而不用定位到那一段代碼上去,提高了開(kāi)發(fā)效率,需要的朋友可以參考下
    2022-05-05

最新評(píng)論