理解 Go 中的切片:append 操作的深入分析(篇2)

理解 Go 語言中 slice 的性質對于編程非常有益。下面,我將通過代碼示例來解釋切片在不同函數之間傳遞并執行 append 操作時的具體表現。

本篇為第 2 篇,當切片的容量 cap 不夠時

func main() {// slice1 當前長度為 3,容量大小也為 3slice1 := make([]int, 3, 3)fmt.Println("slice 1:", slice1, len(slice1), cap(slice1))test1(slice1)fmt.Println("slice 1:", slice1, len(slice1), cap(slice1))
}func test1(slice2 []int) {slice2[0] = 1slice2 = append(slice2, 1)	// append 操作slice2[0] = 2fmt.Println("slice 2:", slice2, len(slice2), cap(slice2))
}

輸出:

slice 1[0 0 0] 3 3
slice 2[2 0 0 1] 4 6
slice 1[1 0 0] 3 3

解釋:在 test1 函數中,我們首先將 slice2 的第一個元素設為 1(這個更改也反映在 slice1 上),然后對其執行 append 操作。

因為 slice2 的容量已滿(3/3),所以 append 操作會觸發底層數組的擴容。
當新的底層數組準備好之后,我們再次更改 slice2 的第一個元素,將其設為 2。這次的更改并不影響 slice1,因為擴容操作已使 slice2 指向新的底層數組。

示意圖如下:

切片append_流程圖(cap不足)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41776.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41776.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41776.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

.netcore grpc的proto文件字段詳解

一、.proto文件字段概述 grpc的接口傳輸參數都是根據.proto文件約定的字段格式進行傳輸的grpc提供了多種類型字段;主要包括標量值類型(基礎類型)、日期時間、可為null類型、字節、列表、字典、Any類型(任意類型)、One…

前端筆試+面試分享

以下是個人線下面試遇到的真實的題,僅供參考和學習 1. css 選擇符有哪些?哪些屬性可以繼承?優先級算法加何計算? CSS選擇符有很多種,例如類型選擇器、類選擇器、ID選擇器、屬性選擇器、偽類選擇器、偽元素選擇器等。 …

【1day】復現海康威視綜合安防管理平臺artemis接口Spring boot heapdump內存泄露漏洞

目錄 一、漏洞描述 二、影響版本 三、資產測繪 四、漏洞復現 一、漏洞描述 HIKVISION iSecure Center綜合安防管理平臺是一套“集成化”、“智能化”的平臺,通過接入視頻監控、一卡通

Algorithem Review 5.2 圖論

網絡流 設源點為 s s s,匯點為 t t t,每條邊 e e e 的流量上限為 c ( e ) c(e) c(e),流量為 f ( e ) f(e) f(e)。割 指對于某一頂點集合 P ? V P \subset V P?V,從 P P P 出發指向 P P P 外部的那些原圖中的邊的集合&a…

回歸預測 | MATLAB實現基于SSA-KELM-Adaboost麻雀算法優化核極限學習機結合AdaBoost多輸入單輸出回歸預測

回歸預測 | MATLAB實現基于SSA-KELM-Adaboost麻雀算法優化核極限學習機結合AdaBoost多輸入單輸出回歸預測 目錄 回歸預測 | MATLAB實現基于SSA-KELM-Adaboost麻雀算法優化核極限學習機結合AdaBoost多輸入單輸出回歸預測預測效果基本介紹模型描述程序設計參考資料 預測效果 基本…

SSH遠程連接MacOS catalina并進行終端顏色配置

一、開關SSH服務 在虛擬機上安裝了MacOS catalina,想要使用SSH遠程進行連接,但是使用“系統偏好設置”/“共享”/“遠程登錄”開關進行打開,卻一直是正在啟動“遠程登錄”: 難道是catalina有BUG?不過還是有方法的&…

第07天 Static關鍵字作用及用法

?作者簡介:大家好,我是Leo,熱愛Java后端開發者,一個想要與大家共同進步的男人😉😉 🍎個人主頁:Leo的博客 💞當前專欄:每天一個知識點 ?特色專欄&#xff1a…

【前端|Javascript第5篇】全網最詳細的JS的內置對象文章!

前言 在當今數字時代,前端技術正日益成為塑造用戶體驗的關鍵。我們在開發中需要用到很多js的內置對象的一些屬性來幫助我們更快速的進行開發。或許你是剛踏入前端領域的小白,或者是希望深入了解內置對象的開發者,不論你的經驗如何&#xff0c…

使用Dockerfile制作RocketMq的Docker鏡像(任意版本)

使用dockerfile制作任意版本的docker鏡像 1、Dockerfile 創建文件rocketmq #FROM openjdk:8 FROM java8:1.0 #上面的基礎鏡像可以自己 docker pull LABEL "作者"=aaaaaENV ROCKETMQ_VERSION 5.1.3 # ENV LANG en_US.UTF-8ENV ROCKETMQ_HOME="/home/rocketm…

MATLAB中的代數環概念

在 Simulink 模型中,當存在信號環并且信號環中只存在直接饋通模塊時,將出現代數環。直接饋通表示 Simulink 需要模塊輸入信號的值來計算當前時間步的輸出。這種信號循環會在同一時間步中產生模塊輸出和輸入的循環依存關系。這會導致一個需要在每個時間步…

【【verilog典型電路設計之流水線結構】】

verilog典型電路設計之流水線結構 下圖是一個4位的乘法器結構,用verilog HDL 設計一個兩級流水線加法器樹4位乘法器 對于流水線結構 其實需要做的是在每級之間增加一個暫存的數據用來存儲 我們得到的東西 我們一般來說會通過在每一級之間插入D觸發器來保證數據的聯…

Oracle 數據庫備份

1、使用管理員賬號創建對應的directory目錄 登錄數據庫 sqlplus / as sysdba 創建directory create or replace directory dumpdir as F:\container; 2、給用戶賦予使用該目錄的權限 grant read,write on directory dumpdir to Scott; 查看創建的目錄位置 select * fro…

OpenCV-Python中的圖像處理-圖像特征

OpenCV-Python中的圖像處理-圖像特征 圖像特征Harris角點檢測亞像素級精度的角點檢測Shi-Tomasi角點檢測SIFT(Scale-Invariant Feature Transfrom)SURF(Speeded-Up Robust Features)FAST算法BRIEF(Binary Robust Independent Elementary Features)算法ORB (Oriented FAST and R…

JavaScript判空設默認值的幾種寫法

前端面試題庫 (面試必備) 推薦:★★★★★ 地址:前端面試題庫 實踐中需要給某個變量賦值時,若數據來源不可控,通常會給它設置一個默認值(就像空對象模式一樣)。JavaScri…

python編程中有哪些方便的調試方法

大家好,給大家分享一下一個有趣的事情,很多人還不知道這一點。下面詳細解釋一下。現在讓我們來看看! 對于每個程序開發者來說,調試幾乎是必備技能。常用Pycharm編輯器里的方法有Print大法、log大法,但缺少類似Matlab的…

敏感掛載binfmt_misc容器逃逸復現和分析

前言 對于/proc下有很多掛載會導致容器逃逸,其中binfmt_misc就是一種可以利用的逃逸掛載 binfmt_mics 實驗 touch test_fmt_intp echo aaa > test_fmt echo #!/bin/sh > test_fmt_intp echo >> test_fmt_intp chmod x test_fmt_intp echo :test_fmt…

怎么開通Tik Tok海外娛樂公會呢?

TikTok作為全球知名的社交媒體平臺,吸引了數億用戶的關注和參與。許多公司和個人渴望通過開通TikTok直播公會進入這一領域,以展示自己的創造力和吸引更多粉絲。然而,成為TikTok直播公會并非易事,需要滿足一定的門檻和申請找cmxyci…

【日常積累】Linux之init系統學習

init系統簡介: Linux 操作系統的啟動首先從 BIOS 開始,接下來進入 boot loader,由 bootloader 載入內核,進行內核初始化。內核初始化的最后一步就是啟動 pid 為 1 的 init 進程,這個進程是系統的第一個進程,它負責產生…

銀河麒麟服務器v10 sp1 .Net6.0 上傳文件錯誤

上一篇:銀河麒麟服務器v10 sp1 部署.Net6.0 http https_csdn_aspnet的博客-CSDN博客 .NET 6之前,在Linux服務器上安裝 libgdiplus 即可解決,libgdiplus是System.Drawing.Common原生端跨平臺實現的主要提供者,是開源mono項目。地址…

封裝form表單

目錄 1. 源碼 2. 其他頁面引用 ps&#xff1a;請看完看明白再復用 1. 源碼 <template><div style"width: 100%; height: 100%" class"form-condition"><!-- 普通表單 --><el-card shadow"hover" class"cardheigh…