slice擴容

来源:https://www.cnblogs.com/sui-z/archive/2019/03/01/10458814.html
-Advertisement-
Play Games

1、當向切片新加入數據,原切片數據加上新數據長度不超過切片容量時,直接加入切片末尾,容量大小不變. 2、當加入新的數據後,數據長度超出原切片的容量大小2倍,則切片的容量會是數據長度(偶數)或數據長度(奇數)+1. 3、當加入新的數據後,數據長度未超出原切片的容量大小2倍,則切片的容量擴充一倍. ca ...


1、當向切片新加入數據,原切片數據加上新數據長度不超過切片容量時,直接加入切片末尾,容量大小不變.

2、當加入新的數據後,數據長度超出原切片的容量大小2倍,則切片的容量會是數據長度(偶數)或數據長度(奇數)+1.

3、當加入新的數據後,數據長度未超出原切片的容量大小2倍,則切片的容量擴充一倍.

 1 package main
 2 
 3 import (
 4     "fmt"
 5 )
 6 
 7 func main() {
 8     var arr = [20]int{1, 2, 34, 5, 5, 5, 5, 667, 7}
 9     a1 := arr[:3:3]
10     a11 := arr[:3:3]
11 
12     fmt.Printf("cap(a1)=%d,len(a1)=%d\n", cap(a1), len(a1))
13 
14     var a2 = []int{1, 2, 2, 3}
15     a1 = append(a1, a2...) //總數據長度是7,容量擴容2倍裝不下 2*3=6
16     //長度是數據長度7+1=8
17     //數據長度是奇數,容量為數據長度+1;
18     //數據長度是偶數,容量為數據長度
19     var a22 = []int{1, 2, 2, 3, 4}
20     a11 = append(a11, a22...)
21     fmt.Printf("cap(a1)=%d,len(a1)=%d\n", cap(a1), len(a1))
22     fmt.Printf("cap(a11)=%d,len(a11)=%d\n", cap(a11), len(a11))
23 
24     a3 := arr[:3:6] //容量6
25     fmt.Printf("cap(a3)=%d,len(a3)=%d\n", cap(a3), len(a3))
26 
27     a3 = append(a3, a2...) //總數據長度是7,容量擴容2倍可以裝下 2*6=12
28     fmt.Printf("cap(a3)=%d,len(a3)=%d\n", cap(a3), len(a3))
29 
30 }

 

輸出

cap(a1)=3,len(a1)=3

cap(a1)=8,len(a1)=7

cap(a11)=8,len(a11)=8

cap(a3)=6,len(a3)=3

cap(a3)=12,len(a3)=7


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 早些年做CRM用到的一個金額轉換函數,今天從舊項目中拿出來記錄一下。金額轉換的函數方法有很多,都很不錯。不過這個是小崔剛工作的時候寫的一個轉換函數,多少還是有點紀念意義。如有問題請朋友們指出,小崔及時修正。謝謝啦! 廢話不多說直接上代碼: 以上是基礎轉換代碼,在這個基礎上進行二次改造: 運行結果: ...
  • 登錄驗證碼 Servlet / 從請求中獲取數據,獲取驗證碼的session的值轉為String類型, 銷毀,防止返回後驗證碼不刷新,重新驗證成功 判斷驗證碼是否相同(忽略大小寫) 相同:創建user對象調用service層的方法驗證返回結果是否為空 為空:創建session:儲存錯誤信息,轉發,登 ...
  • 本文是接著上篇博客寫的:Spring boot 入門(三):SpringBoot 集成結合 AdminLTE(Freemarker),利用 generate 自動生成代碼,利用 DataTable 和 PageHelper 進行分頁顯示。按照前面的博客,已經可以搭建一個簡單的 Spring Boot ...
  • 小談: 帖主妥妥的一名"中"白了哈哈哈。軟工的大三狗了,也即將找工作,懷著絲絲忐忑接受社會的安排。這是第一次寫博客(/汗顏),其實之前在學習探索過程中,走了不少彎路,爬過不少坑。真的挺感謝一路上的前輩們的博客也好,隨筆也好,哪怕是評論,或多或少解決了一些問題。我感覺學技術的過程中,記錄下自己解決問題 ...
  • 長期以來都想用python對Excel進行一些列的操作,但由於某種神秘的力量控制著我,一直未果,今天有幸用requests模塊和BeautifulSoup模塊進行爬蟲練習,拿到了一大批數據,照我以前,都只是用字典啊、列表啊,或者文本文件存放,之前沒覺得哪裡不好,但今天的我很奇怪,怎麼看怎麼不爽,而且 ...
  • 嘔,大一下學期的第一周結束啦,一周過的挺快也挺多出乎意料的事情的~ 隨之而來各種各樣的任務也來了,嘛畢竟是大學嘛,有點上進心的人多多少少都會接到不少任務的,忙也正常啦~端正心態 開心面對就好啦~ 今天突然回顧了一下《從你的全世界路過》這本書和電影,莫名的感悟涌上心頭,收集到了一些走入人心的一些語句: ...
  • 集合棧電腦(The SetStack Computer, ACM/ICPC NWERC 2006,Uva12096) 題目描述 有一個專門為了集合運算而設計的“集合棧”電腦。該機器有一個初始為空的棧,並且支持以下操作: PUSH:空集“{}”入棧 DUP:把當前棧頂元素複製一份後再入棧 UNIO ...
  • 金三銀四跳槽季即將到來,作為 Java 開發者你開始刷面試題了嗎?別急,小編整理了阿裡技術面試題,看這一文就夠了! 阿裡面試題目目錄 技術一面(基礎面試題目) 技術二面(技術深度、技術原理) 項目實戰(項目模擬面試) JAVA開發技術常問的問題 阿裡必會知識 阿裡面試範疇 面試總結 文章福利(答案獲 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...