返回顶部
首页 > 资讯 > 后端开发 > GO >go语言中切片的长度和容量的区别
  • 693
分享到

go语言中切片的长度和容量的区别

GO长度go语言 2022-06-07 20:06:25 693人浏览 泡泡鱼
摘要

切片的长度,显而易见的就是元素的个数,根据元素的个数进行返回具体的长度。 切片的长度,更像是一个警戒值,如果长度与容量相等,就会进行容量的扩容,比如 des :=make([

切片的长度,显而易见的就是元素的个数,根据元素的个数进行返回具体的长度。

切片的长度,更像是一个警戒值,如果长度与容量相等,就会进行容量的扩容,比如


des :=make([]int , 3 , 5)
//此时,长度为3,容量为5,但是如果使用append(),
//切片长度会变为4,再次使用append()切片长度变为5。
//此时,切片长度与容量相同,此时,切片的容量增大变为cap = len*2

也就是通过一个容量设警戒值,如果等于警戒值,就会自动将切片进行扩容

补充:Go语言中切片的长度与容量的变化

学习Go语言的切片信息时,发现切片的容量变化非常让人摸不着头脑,为了更记忆深刻就写下了这篇,如有错误之处,请大家指正

一,当前切片的长度与容量相等情况:

package main
import (
    "fmt"
)
func main() {
numbers := []int{0,1,2}  
printSlice(numbers)
//通过append给numbers增加信息,如果当前切片的长度与容量相等,增加信息的长度小于等于原来的长度,
那么切片的长度变为相加之和,容量变为原来的2倍(图片一的第二行结果)
numbers = append(numbers, 10,5,6) 
printSlice(numbers)
//通过append给numbers增加信息,如果当前切片A的长度与容量相等,增加信息B的长度大于切片A原来的长度,
那么切片的长度变为相加之和,容量变为:B长度+A长度+(B长度-A长度)%2(图片一的第三行结果)
numbers = append(numbers, 12,13,15,16,17,18,19,20,21,22,23) 
printSlice(numbers)
}
func printSlice(x []int){
   fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
}

图片一:

二,如果当前切片的长度小于容量情况:

增加信息的长度与当前长度和小于等于容量


func main() {
   
   numbers := []int{0,1,2}  
   printSlice(numbers)
   numbers = append(numbers, 10,5) 
   printSlice(numbers)
   //通过append给numbers增加信息,如果当前切片的长度小于容量,增加信息的长度与当前长度和小于等于容量,
   那么numbers的长度变为相加之和,容量不变(图片二的第三行结果)
   numbers = append(numbers, 11)  
   printSlice(numbers)
}

图片二:

增加信息B的长度与当前A的长度大于A容量并且小于A容量的2倍


func main() {
   
   numbers := []int{0,1,2}  
   printSlice(numbers)
   numbers = append(numbers, 10,5) 
   printSlice(numbers)
   //通过append给numbers增加信息,如果当前切片A的长度小于容量,增加信息B的长度与当前A的长度大于A容量并且小于A容量的2倍,
   那么numbers的长度变为相加之和,容量变为:A容量*2(图片三的第三行结果)
   numbers = append(numbers, 11,12)  
   printSlice(numbers)
}

图片三:

增加信息B的长度与当前A的长度大于A容量的2倍


func main() {

numbers := []int{0,1,2}  
printSlice(numbers)
numbers = append(numbers, 10,5) 
printSlice(numbers)
//通过append给numbers增加信息,如果当前切片A的长度小于容量,增加信息B的长度与当前A的长度大于A容量的2倍,
那么numbers的长度变为相加之和C。容量变为:B长度+A长度+(B长度-A长度)%2(图片四的第三行结果)
numbers = append(numbers, 11,12,13,15,16,17,18,19,20)  
printSlice(numbers)
}

图片四:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。如有错误或未考虑完全的地方,望不吝赐教。


您可能感兴趣的文档:

--结束END--

本文标题: go语言中切片的长度和容量的区别

本文链接: https://lsjlt.com/news/30598.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • go语言中切片的长度和容量的区别
    切片的长度,显而易见的就是元素的个数,根据元素的个数进行返回具体的长度。 切片的长度,更像是一个警戒值,如果长度与容量相等,就会进行容量的扩容,比如 des :=make([...
    99+
    2022-06-07
    GO 长度 go语言
  • 详解Go语言中切片的长度与容量的区别
    目录切片的声明切片的长度和容量切片追加元素后长度和容量的变化append 函数切片的源代码学习切片的结构体切片的扩容总结切片的声明 切片可以看成是数组的引用(实际上切片的底层数据结构...
    99+
    2024-04-02
  • Go语言中切片与变量的区别详解
    切片和变量的区别:切片是动态大小的元素集合,而变量是存储值的固定内存位置。切片按引用传递,而变量按值传递。对切片所做的更改会影响所有引用它的变量,而对变量所做的更改只影响该变量自身。 ...
    99+
    2024-04-02
  • 理解Go语言中切片与变量的区别
    切片和变量在 go 语言中是不同的:切片是引用类型,引用底层数组,而变量直接存储值。对变量赋值创建新副本,而对切片赋值创建指向相同数组的新切片。切片使用引用,因此修改一个切片可能会影响其...
    99+
    2024-04-02
  • go语言切片和变量有什么区别
    go语言切片和变量有:1、切片是一种引用类型,而变量是一种值类型;2、切片具有动态扩容的能力,而变量的大小是固定的;3、切片可以通过切片表达式来提取部分元素,而变量只能访问整个值;4、切片还可以与其他切片共享底层数据,而变量是独立的。本教程...
    99+
    2023-07-14
  • Go语言数组和切片的区别详解
    目录数组声明以及初始化函数参数切片声明以及初始化函数参数总结参考文章:在 Go 语言中,数组和切片看起来很像,但其实它们又有很多的不同之处,这篇文章就来说说它们到底有哪些不同。 另外...
    99+
    2023-05-14
    Go 数组和切片
  • Go 语言中的数组和切片有什么区别?
    在 Go 语言中,数组和切片都是常见的数据结构。尽管它们都可以用于存储相同类型的数据,但它们在语义上具有不同的行为,这使得它们在实际使用中有着不同的用途。 数组 数组是一种固定长度、存储相同类型元素的集合。在 Go 语言中,数组的长度...
    99+
    2023-10-07
    数组 git 日志
  • Go语言数组和切片的区别有哪些
    这篇“Go语言数组和切片的区别有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Go语言数组和切片的区别有哪些”文章吧。数...
    99+
    2023-07-05
  • 深入剖析Go语言中数组和切片的区别
    目录1. 数组的定义和特性1.1 数组的定义1.2 数组的特性2. 切片的定义和特性2.1 切片的定义2.2 切片的特性3. 数组和切片的内存布局3.1 数组的内存布局3.2 切片的...
    99+
    2023-05-19
    Go语言数组 切片区别 Go语言数组 切片 Go语言数组 Go语言 切片
  • go语言求任意类型切片的长度操作
    最近用go写程序时遇到一个问题——求任意类型切片的长度。 作为一个初学者,刚刚学了接口和切片,知道了每个类型都实现了一个空接口interface{},那么如果接口类型作为函数的...
    99+
    2022-06-07
    GO 长度 go语言
  • go语言如何求任意类型切片的长度
    这篇文章将为大家详细讲解有关go语言如何求任意类型切片的长度,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。go适合做什么go是golang的简称,而golang可以做服务器端开发,且golang很适合做日...
    99+
    2023-06-14
  • Go中的nil切片和空切片区别详解
    Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0。 字符串变量的默认值为空字符串。 ...
    99+
    2022-06-07
    nil GO
  • golang切片长度与容量指的是什么
    今天小编给大家分享一下golang切片长度与容量指的是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在golang中,切...
    99+
    2023-07-05
  • Go语言中的切片和变量有何不同?
    在 go 语言中,变量和切片是两种不同的数据结构,具有不同的特性和用法。变量存储单一值,而切片存储多个值并具有动态大小。变量具有固定大小并可以通过赋值分配,而切片是使用 make() 函...
    99+
    2024-04-02
  • go语言中数组与切片有哪些区别
    本文小编为大家详细介绍“go语言中数组与切片有哪些区别”,内容详细,步骤清晰,细节处理妥当,希望这篇“go语言中数组与切片有哪些区别”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。数组与切片的区别:1、切片是指针类...
    99+
    2023-07-05
  • Go语言切片是怎么扩容的
    本篇内容主要讲解“Go语言切片是怎么扩容的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go语言切片是怎么扩容的”吧!在 Go 语言中,有一个很常用的数据结构,那就是切片(Slice)。切片是一...
    99+
    2023-07-06
  • 深入探讨Go语言中切片和变量的异同
    切片和变量在go中都引用底层数组,共享内存。切片具有长度和可扩展容量,而变量具有固定长度。切片使用指针语义,变量使用值语义。通过根据需求选择切片或变量,可以编写更灵活高效的go程序。 ...
    99+
    2024-04-02
  • Go语言容器的数组和切片如何使用
    这篇文章主要介绍“Go语言容器的数组和切片如何使用”,在日常操作中,相信很多人在Go语言容器的数组和切片如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言容器的数组和切片如何使用”的疑惑有所帮助!...
    99+
    2023-07-04
  • Go语言中的数组和切片是什么
    本篇内容介绍了“Go语言中的数组和切片是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录 数组 切片(Slice)append 函数1...
    99+
    2023-06-20
  • 浅析Go语言容器之数组和切片的使用
    目录序列容器数组VectorDequeList单链表总结在 Java 的核心库中,集合框架可谓鼎鼎大名:Array 、List、Set、Queue、HashMap 等等,随便拎一个出...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作